3

我有这段代码,我知道它正在对列表进行排序lstDMV。但请帮我分解一下。

lstDMV.Sort((x, y) => DateTime.Compare(x.NotifDate, y.NotifDate));

是什么=>意思?它是如何根据比较函数返回的整数工作的?

lstDMV如果我排序整数而不是日期,我该如何排序?

4

6 回答 6

2

它被称为lambda 表达式。对于比较本身,请查看DateTime.Compare方法。查看它的返回值:

  • < 0 --> t1 早于 t2
  • 0 --> t1 与 t2 相同
  • > 0 --> t1 晚于 t2
于 2013-01-18T14:17:03.630 回答
2

它被称为lambda operator。来自MSDN

=> 标记称为 lambda 运算符。它在 lambda 表达式中用于将左侧的输入变量与右侧的 lambda 主体分开。Lambda 表达式是类似于匿名方法但更灵活的内联表达式;它们广泛用于以方法语法表示的 LINQ 查询。

对于排序操作,使用Sort()这样的方法;

lstDMV.Sort((int1, int2) => int1.CompareTo(int2));
于 2013-01-18T14:17:34.393 回答
2

lambda 运算=>

lstDMV.Sort((x, y) => DateTime.Compare(x.NotifDate, y.NotifDate));

基本上用一段代码创建一个新的委托来执行。x 和 y 作为参数过去。

您可以通过将代码更改为来对 int 列表进行排序

lstDMV.Sort((x, y) => x.CompareTo(y));
于 2013-01-18T14:18:29.350 回答
1

=> 是一个 lambda 表达式运算符,您可以将其视为 javascript 中的匿名函数

在这种情况下

lstDMV.Sort((x, y) => DateTime.Compare(x.NotifDate, y.NotifDate)); 它正在创建一个用作 Sort 事件处理程序的函数。编译器可以推断出 x 和 y 的类型,因为它知道 Close 委托的定义。

于 2013-01-18T14:18:38.013 回答
1

首先,这些是 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 很有帮助。

于 2013-01-18T14:18:44.173 回答
1

(其他人已经回答了lambda operator你问题的一部分)

如果我排序整数而不是日期,我该如何排序我的 lstDMV?

ints.Sort((i1, i2) => i1.CompareTo(i2));
于 2013-01-18T14:20:29.667 回答