了解Linq中GroupBy的重载

时间:2018-01-03 15:54:17

标签: c# linq linq-group

我正在通过linq GroupBy扩展方法,偶然发现其中一个让我困惑的重载,现在这会产生这样的结果

<body>
  Text 1
  <p>
    Text 2
  </p>
  <span>
    Text 3
  </span>
</body>

enter image description here

但我的问题是,如何使用其他重载,例如

enter image description here

我如何使用这个重载,我搜索了很多博客,但没有博客解释我所有的重载

1 个答案:

答案 0 :(得分:3)

elementSelector可让您投射 元素(您的号码)。

int[] numbers = {1,1,1,2,2,3,4,4,4,4,4,5,5 };
var result = numbers.GroupBy(g => g, i => 2 * i); // project each number to the doubled value

导致

3 times 2    (2 * 1)
2 times 4    (2 * 2)
1 time  6    (2 * 3)
5 times 8    (2 * 4)
2 times 10   (2 * 5)

我个人更喜欢超负荷resultSelector而不是额外拨打Select

int[] numbers = {1,1,1,2,2,3,4,4,4,4,4,5,5 };
var result = numbers.GroupBy(g => g, (key, g) => new {
    key,
    data=g
 });

resultSelector等同于您示例中的后续Select调用,但它将该键的键和elemetns序列作为单独的参数,而Select适用于结果IGrouping<>