gpt4 book ai didi

.net - 使用 linq 对相邻值进行分组

转载 作者:行者123 更新时间:2023-12-01 21:48:39 24 4
gpt4 key购买 nike

我有一个 int 值的排序列表,我想将相邻值分组。其中下一个值是 nextvalue>= prevValue+1 的值是邻居。

例如:列表:

{1,2,3,5,6,8,9,10}

群组将是:

{1,2,3}
{5,6}
{8,9,10}

这可以使用 linq 来完成吗?

这可以在没有 linq 的情况下轻松完成 - 通过迭代列表,但我想知道 linq 是否有解决方案。

最佳答案

这对我有用:

var result =
items
.Skip(1)
.Aggregate(
new [] { items.Take(1).ToList() }.ToList(),
(acc, item) =>
{
if (acc.Last().Last() == item - 1)
{
acc.Last().Add(item);
}
else
{
acc.Add(new [] { item }.ToList());
}
return acc;
});

我得到这个结果:

result

顺便说一句,我确实喜欢养成像 new [] { item }.ToList() 这样构建列表的习惯,因为它允许构建匿名类型的列表。在许多 LINQ 查询中非常有用。

关于.net - 使用 linq 对相邻值进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27279089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com