我有这段代码,我知道它正在对列表进行排序lstDMV
。但请帮我分解一下。
lstDMV.Sort((x, y) => DateTime.Compare(x.NotifDate, y.NotifDate));
是什么=>
意思?它是如何根据比较函数返回的整数工作的?
lstDMV
如果我排序整数而不是日期,我该如何排序?
它被称为lambda 表达式。对于比较本身,请查看DateTime.Compare方法。查看它的返回值:
它被称为lambda operator
。来自MSDN;
=> 标记称为 lambda 运算符。它在 lambda 表达式中用于将左侧的输入变量与右侧的 lambda 主体分开。Lambda 表达式是类似于匿名方法但更灵活的内联表达式;它们广泛用于以方法语法表示的 LINQ 查询。
对于排序操作,使用Sort()
这样的方法;
lstDMV.Sort((int1, int2) => int1.CompareTo(int2));
lambda 运算=>
符
lstDMV.Sort((x, y) => DateTime.Compare(x.NotifDate, y.NotifDate));
基本上用一段代码创建一个新的委托来执行。x 和 y 作为参数过去。
您可以通过将代码更改为来对 int 列表进行排序
lstDMV.Sort((x, y) => x.CompareTo(y));
=> 是一个 lambda 表达式运算符,您可以将其视为 javascript 中的匿名函数
在这种情况下
lstDMV.Sort((x, y) => DateTime.Compare(x.NotifDate, y.NotifDate)); 它正在创建一个用作 Sort 事件处理程序的函数。编译器可以推断出 x 和 y 的类型,因为它知道 Close 委托的定义。
首先,这些是 Lambda 表达式。现在回答您的问题: => 是一个定义返回值的运算符。
在您的情况下(x,y)
,将返回DateTime.Compare(x.NotifDate, y.NotifDate)
. 现在Sort()
,您的 List 的 - 函数将以某种方式根据 的值对 List 进行排序DateTime.Compare(x.NotifDate, y.NotifDate)
。
看看 MSDN 文章:http: //msdn.microsoft.com/en-us/library/bb397687.aspx 很有帮助。
(其他人已经回答了lambda operator
你问题的一部分)
如果我排序整数而不是日期,我该如何排序我的 lstDMV?
ints.Sort((i1, i2) => i1.CompareTo(i2));