Задать вопрос
@embiid

Как выбрать одну запись из повторяющихся?

Из базы данных вытаскиваю записи. И некоторые записи повторяются достаточно часто.
К примеру, из списка записей 80 штук я хочу отсеить пару десятков, которые относительно повторяются по опеределенному полю. Как такое сделать можно? Как извлечь все записи повторяющиеся но оставить один из них?

Думал по поводу groupBy но не знаю как дальше с ним оперировать:

var result = rpcResponse.Result;

                var resultWithoutRepeating = result
                    .GroupBy(ac => ac.ActionCode)
                    .Where(g => g.Count() > 1)
                    .Select(k => new
                    { 
                        Element = k.Key,
                        Counter = k.Count()
                    })
                    .ToList();
  • Вопрос задан
  • 209 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
@OwDafuq
Группировка по общим полям, а потом выборка первого:

var persons = new[]
{
    new Person{ Id = 1, FirstName = "A", LastName = "A", Age = 20 },
    new Person{ Id = 2, FirstName = "A", LastName = "B", Age = 20 },
    new Person{ Id = 3, FirstName = "A", LastName = "C", Age = 30 },
    new Person{ Id = 4, FirstName = "A", LastName = "D", Age = 30 },
    new Person{ Id = 5, FirstName = "B", LastName = "A", Age = 10 },
    new Person{ Id = 6, FirstName = "B", LastName = "B", Age = 20 },
    new Person{ Id = 7, FirstName = "B", LastName = "C", Age = 10 },
};

var result = persons.GroupBy(x => new { x.FirstName, x.Age }).Select(x => x.First());

foreach (var element in result)
{
    Console.WriteLine(element);
}

class Person
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }

    public override string ToString() => $"{Id}, {FirstName}, {LastName}, {Age}";
}
Ответ написан
@embiid Автор вопроса
Спасибо OwDafuq за мысль:
var dummyVariable =
    result
        .GroupBy(x => x.ActionCode)
        .SelectMany(group => group.Key == 52 ? group.Take(1) : group)
        .ToList();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы