Лямбда-выражение groupby для одного столбца и выборка всех столбцов - PullRequest
0 голосов
/ 20 сентября 2018

Здесь мой запрос: у меня есть список с повторяющимися данными, и для этого я хочу сделать предложение groupby в столбце FName и отобразить его в порядке убывания счетчика и отобразить все записи этого конкретного списка * 1003.*

        List<Employee> empList = new List<Employee>();
        empList.Add(new Employee() { ID = 1, FName = "John", Age = 23, Sex = 'M' });
        empList.Add(new Employee() { ID = 2, FName = "Mary", Age = 25, Sex = 'F' });
        empList.Add(new Employee() { ID = 3, FName = "John", Age = 28, Sex = 'M' });
        empList.Add(new Employee() { ID = 4, FName = "Amber", Age = 23, Sex = 'M' });
        empList.Add(new Employee() { ID = 5, FName = "Kathy", Age = 25, Sex = 'M' });
        empList.Add(new Employee() { ID = 6, FName = "Lena", Age = 27, Sex = 'F' });
        empList.Add(new Employee() { ID = 7, FName = "John", Age = 28, Sex = 'M' });
        empList.Add(new Employee() { ID = 8, FName = "Kathy", Age = 27, Sex = 'F' });         

        var dup1 = empList
          .GroupBy(x => new { x.FName })
          .Select(group => new { Name = group.Key.FName, Count = group.Count() })
          .OrderByDescending(x => x.Count);

        foreach (var x in dup1)
        {
            Console.WriteLine(x.Count + " " + x.Name);
        }

Из приведенного выше кода я получаю вывод, подобный этому:

enter image description here

Но чтоЯ действительно хочу, это так:

enter image description here

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Похоже, вы хотите количество групп, а затем информацию о первом элементе в группе.Если это так, то вы можете просто использовать GroupBy для группировки элементов, а затем в своем выводе просто захватить и отобразить информацию для первого элемента в группе:

var groups = empList.GroupBy(e => e.FName).OrderByDescending(group => group.Count());

foreach (var group in groups)
{
    var first = group.First();
    Console.WriteLine($"{group.Count()} {first.FName}\t{first.Age} {first.Sex}");
}

Вывод

enter image description here

0 голосов
/ 20 сентября 2018
.Select(group => new
{
    Name = group.Key.FName, 
    Count = group.Count(),
    Age = group.First().Age,
    Sex = group.First().Gender
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...