从分组的LINQ语句返回值的对象

时间:2013-09-30 12:10:32

标签: c# linq

我已成功从分组LINQ语句中获得所需的输出,但我想知道是否有更优雅的方式。

目前我在每个组中都有两个元素,并且我使用下面的代码返回一个包含fieldA, fieldB值的对象列表:

infoList.GroupBy(s => s.Name.Substring(0, s.Name.LastIndexOf("whatever")) + 1)
         .Select(grp => new { 
                              fieldA = grp.ElementAt(0).Value, 
                              fieldB = grp.ElementAt(1).Value 
                         }
          );

任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

应该是

infoList.GroupBy(s => s.Name.Substring(0, s.Name.LastIndexOf("whatever"),
                (key, g) => new { fieldKey= key,fieldValues = g.ToList() });

这是因为群组并不总是有2个元素。最好将它们存储为列表