我在IntExtensions类中有两种方法可以帮助生成下一个可用的增量值(不在需要排除的现有整数列表中)。
我不认为我正在以最佳方式解决NextIncrementalValueNotInList方法,并且想知道是否可以更好地使用linq返回下一个可用的int吗?
public static bool IsInList(this int value, List<int> ListOfIntegers) {
if (ListOfIntegers.Contains(value))
return true;
return false;
}
public static int NextIncrementalValueNotInList(this int value,
List<int> ListOfIntegers) {
int maxResult;
maxResult = ListOfIntegers.Max() + 1;
for (int i = value; i <= maxResult; i++)
{
if (!(i.IsInList(ListOfIntegers)))
{
return i;
}
}
return maxResult;
}
最佳答案
使用linq,您的方法将如下所示:
return IEnumerable.Range(1, ListOfIntegers.Count + 1)
.Except(ListOfIntegers)
.First();