相关疑难解决方法(0)

检查List <Int32>值是否连续

List<Int32> dansConList = new List<Int32>();
dansConList[0] = 1;
dansConList[1] = 2;
dansConList[2] = 3;

List<Int32> dansRandomList = new List<Int32>();
dansRandomList[0] = 1;
dansRandomList[1] = 2;
dansRandomList[2] = 4;
Run Code Online (Sandbox Code Playgroud)

我需要一种方法,在评估上面的列表时,将返回falsefor dansRandomListtruefor,dansConList基于事实dansConList在其值中有一个连续的数字序列,而dansRandomList则没有(缺少值3).

如果可能,最好使用LINQ.

我试过的:

  • 为了达到最终结果,我使用了for循环并与'i'(循环计数器)进行比较以评估值,但如上所述,我想使用LINQ.

c# linq list

16
推荐指数
4
解决办法
1万
查看次数

在LINQ中,如何修改现有的LINQ扩展方法以添加"By"选择器,即将Func <T> TResult添加到函数签名?

我很想知道如何修改现有的LINQ函数以添加Func<T> TResult到函数签名,即允许它使用选择器(o => o.CustomField).

例如,在C#中,我可以.IsDistinct()用来检查整数列表是否不同.我还可以.IsDistinctBy(o => o.SomeField)用来检查字段o.SomeField中的整数是否不同.我相信,在幕后,.IsDistinctBy(...)Func<T> TResult附加功能签名的东西吗?

我的问题是:获取现有LINQ扩展函数并将其转换为可以有参数的技术是(o => o.SomeField)什么?

这是一个例子.

此扩展函数检查列表是否单调增加(即值永远不会减少,如1,1,2,3,4,5,5):

main()
{
   var MyList = new List<int>() {1,1,2,3,4,5,5};
   DebugAssert(MyList.MyIsIncreasingMonotonically() == true);
}

public static bool MyIsIncreasingMonotonically<T>(this List<T> list) where T : IComparable
{
    return list.Zip(list.Skip(1), (a, b) => a.CompareTo(b) <= 0).All(b => b);
}
Run Code Online (Sandbox Code Playgroud)

如果我想添加"By",我会添加一个参数Func<T> TResult.但是如何修改函数体以使其选择(o => o.SomeField)

main()
{
   DebugAssert(MyList.MyIsIncreasingMonotonicallyBy(o => o.CustomField) == true);
}

public …
Run Code Online (Sandbox Code Playgroud)

.net c# linq

5
推荐指数
1
解决办法
187
查看次数

标签 统计

c# ×2

linq ×2

.net ×1

list ×1