Как я могу создать список> состоящий из группировок из другого списка? - PullRequest
0 голосов
/ 24 мая 2019

Я хочу сделать List<KeyValuePair<string, int>> с указанием почтовых индексов и количества людей, живущих в каждом месте.

Данные поступают из другого списка, который является List<Member>. Класс Member выглядит следующим образом:

public class Member
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Zip { get; set; }
    // some more properties
}

Это код, который у меня есть:

List<KeyValuePair<string, int>> zipCount = new List<KeyValuePair<string, int>>();
foreach (Member member in members)
{
    zipCount.Add(new KeyValuePair<string, int>(member.Zip, 1));
}

Теперь, конечно, мне не хватает некоторого кода linq для членов группы по почтовому индексу.

Как бы выглядел такой код linq? Я попытался foreach (Member member in members.GroupBy(g => g.Zip)), но это выдает это сообщение об ошибке:

InvalidCastException: Невозможно привести объект типа 'System.Linq.Grouping`2 [System.String, SolutionName.Models.Member]' к типу 'SolutionName.Models.Member'.

1 Ответ

3 голосов
/ 24 мая 2019

Это должно работать:

var zipCount = members.GroupBy(m => m.Zip)
    .Select(g => new KeyValuePair<string, int>(g.Key, g.Count()))
    .ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...