我正在通过linq GroupBy扩展方法,偶然发现其中一个让我困惑的重载,现在这会产生这样的结果
<body>
Text 1
<p>
Text 2
</p>
<span>
Text 3
</span>
</body>
但我的问题是,如何使用其他重载,例如
我如何使用这个重载,我搜索了很多博客,但没有博客解释我所有的重载
答案 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<>
。