c# - 如果缺少数字,Linq 拆分组

标签 c# linq

这个完全难倒了我。

假设我们有一个整数列表

var list = new List {
   1,
   2,
   3,
   5,
   6,
   7,
   9,
   10    
};

我如何将其分组为 1-3,5-7,9-10,在缺少下一个整数的情况下拆分组?

最佳答案

看看这是否有效。没有 for 循环,只有 linq

            List<int> list = new List<int> { 1, 2, 3, 5, 6, 7, 9, 10};
            List<int> splitIndex = list.Skip(1).Select((x,i) => new { x = x, i = i}).Where(x => list[x.i] + 1 != x.x).Select(x => x.i).ToList();
            //add last index
            splitIndex.Add(list.Count - 1);
            var results = splitIndex.Select((x,i) => (i == 0) ? list.Take(x + 1).ToList() : list.Skip(splitIndex[i - 1] + 1).Take(splitIndex[i] - splitIndex[i - 1]).ToList()).ToList();  

关于c# - 如果缺少数字,Linq 拆分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57739843/

相关文章:

c# - 有没有办法从 C# 代码中修改 Visual Studio 2008 或 2010 项目预构建事件?

c# - 泛型异常

c# - 在 LINQ 中选择多维数组

linq - 在 Entity Framework 中的运算符中实现

c# - LINQ to XML - 根据与另一个 XElement 相比的节点值过滤 XElement?

C# 实体 - 按 ID 删除项目 - 要删除的 ID 在另一个列表中

c# - 随机数在不同进程中与相同的 .Net 代码发生冲突

c# - Windows Phone 7 中的媒体播放器

c# - 根据父节点的属性获取子节点

asp.net - LINQ 查询中的默认值