是否可以使用Linq按系列中的更改进行分组,而不是简单地通过匹配组项?

时间:2014-07-14 05:01:24

标签: c# linq grouping

最好通过查看数据来解释。考虑一下这个清单......

Data A      Data B
_______________________
A           1
A           2
B           1
B           2
A           3
A           4

“数据A”上的正常分组功能将产生以下内容......

A
  1
  2
  3
  4
B
  1
  2

...但我们对“数据A”的分组不感兴趣,而是“数据A”发生变化时,就像这样

A
  1
  2
B
  1
  2
A
  3
  4

意思是我们最终得到三组,而不是两组。

这在LINQ中是否可行?

1 个答案:

答案 0 :(得分:1)

最简单的方法是使用GroupAdjacent from moreLINQ:

var results = source.GroupAdjacent(x => x.DataA);

只使用标准的LINQ方法,你可能不得不使用Aggregate,这比使用foreach循环更好(和IMO更差,更不易读)。