c# - 使用 LINQ 获取下一个可用整数

标签 c# linq linq-to-objects

假设我有一个整数列表:

List<int> myInts = new List<int>() {1,2,3,5,8,13,21};

我想获取下一个可用整数,按递增整数排序。不是最后一个或最高的一个,但在这种情况下是不在此列表中的下一个整数。在这种情况下,数字是 4。

是否有一个 LINQ 语句可以给我这个?如:

var nextAvailable = myInts.SomeCoolLinqMethod();

编辑:废话。我说答案应该是 2,但我的意思是 4。对此我深表歉意!

例如:假设您负责分发进程 ID。您想获取当前进程 ID 的列表,并发出下一个,但下一个不应该只是最高值加一。相反,它应该是进程 ID 有序列表中的下一个可用进程。您可以从最高的开始获得下一个可用的,这并不重要。

最佳答案

我看到很多写自定义扩展方法的答案,但是可以用标准的 linq 扩展方法和静态 Enumerable 来解决这个问题。类:

List<int> myInts = new List<int>() {1,2,3,5,8,13,21};

// This will set firstAvailable to 4.
int firstAvailable = Enumerable.Range(1, Int32.MaxValue).Except(myInts).First();

关于c# - 使用 LINQ 获取下一个可用整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11093350/

相关文章:

c# - 使用 EPPlus 翻译 Excel 单元格的位置

c# - 在 C# WPF 应用程序中显示数据表

c# - 从 AppDomain 获取静态列表

c# - 在 C# LINQ 中实现 RANK OVER SQL 子句

c# - 用 LINQ 替换嵌套的 foreach;修改和更新内部深处的属性

C# int、Int32 和枚举

C#/.NET 字符串魔术从文本文件输入中删除注释行?

c# - 这是使用 LINQ 创建频率表的最佳方式吗?

c# - 构建 Where 子句(不确定 PredicateBuilder 是否适合我)

c# - LINQ - SkipWhile 坏了吗?