我想制作一个包含邮政编码和每个位置居住人数的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'。
答案 0 :(得分:3)
这应该有效:
var zipCount = members.GroupBy(m => m.Zip)
.Select(g => new KeyValuePair<string, int>(g.Key, g.Count()))
.ToList();