C# - 列表排序 - x 和 y

3

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

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

=>是什么意思?基于从比较函数返回的整数,它是如何工作的?

如果我要按整数而不是日期排序lstDMV,该怎么办?


你可能想要阅读有关lambda表达式的内容。 - psantiago
它们被称为lambda表达式 - spajce
真巧啊,评论 :D - spajce
6个回答

3

这个被称为Lambda表达式

关于比较本身,请查看DateTime.Compare方法。查看它的返回值:

  • < 0 --> t1早于t2
  • 0 --> t1等于t2
  • > 0 --> t1晚于t2

2
它被称为lambda运算符。来自MSDN;

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

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

lstDMV.Sort((int1, int2) => int1.CompareTo(int2));

2
lambda运算符=>
lstDMV.Sort((x, y) => DateTime.Compare(x.NotifDate, y.NotifDate));

基本上创建一个新的委托,其中包含要执行的代码块。x 和 y 作为参数传递。
你可以通过修改代码来对 int 列表进行排序。
lstDMV.Sort((x, y) => x.CompareTo(y));

1

(其他人已经回答了你问题中的lambda运算符部分)

如果我要按整数而不是日期排序,该怎么对我的lstDMV进行排序?

ints.Sort((i1, i2) => i1.CompareTo(i2));

1

=> 是一个lambda表达式运算符,你可以把它看作是JavaScript中的匿名函数

在这个例子中

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


1
首先,这些是Lambda表达式。 现在回答你的问题: =>是一个运算符,它定义了返回值。

在你的情况下,(x,y)将返回DateTime.Compare(x.NotifDate, y.NotifDate)的值。 现在,你的List的Sort()函数将根据DateTime.Compare(x.NotifDate, y.NotifDate)的值对List进行排序。

看一下MSDN文章:http://msdn.microsoft.com/en-us/library/bb397687.aspx 它非常有帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接