LINQ - GROUP BY IEnumerable

时间:2014-10-06 19:41:13

标签: c# linq

使用LINQ,如何通过 firstThree 对此列表结果进行分组?我的小组方法无效。

    var findOtherZipCodes = (from z in zipCodes                                    
                                 from results in zipFirstThree
                                 where (results.region.ToUpper() == z.City
                                 && results.state == z.State)   
                                select new ZipCodeFirstThree
                                {
                                    region = z.City,
                                    state = z.State,
                                    firstThree = z.ZipCode1.ToString().Substring(0, 3),
                                    zipCode = z.ZipCode1.ToString()
                                }).ToList();

   findOtherZipCodes.GroupBy(x => x.firstThree).ToList();

        foreach (var item in findOtherZipCodes) {
            Console.WriteLine(item.region + " " + item.firstThree + " " + item.zipCode);
            Thread.Sleep(500);


        }

1 个答案:

答案 0 :(得分:3)

GroupBy无法正常工作的原因是您忽略了其结果。它应该是这样的:

var groups = findOtherZipCodes.GroupBy(x => x.firstThree).ToList();

像这样更改foreach循环以完成修复:

foreach (var group in groups) {
    var firstInGroup = group.First();    
    Console.WriteLine(firstInGroup.region + " " + group.Key + " " + firstInGroup.zipCode);
    Thread.Sleep(500);
}