2013-01-18 67 views
3

我有这段代码,我知道它正在整理列表lstDMV。但请帮我分解一下。C# - 列表排序 - x和y

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

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

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

+0

您可能需要在[lambda表达式]读了(http://msdn.microsoft.com/en-us/library/bb397687.aspx)。 – psantiago

+0

他们称为[lamda表达式](http://msdn.microsoft.com/en-us/library/bb397687.aspx) – spajce

+0

什么是巧合评论:D – spajce

回答

2

拉姆达操作者=>

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

基本上创建具有一个代码块到excecute新delegare。 x和y作为参数过去。

你可以通过代码更改为

lstDMV.Sort((x, y) => x.CompareTo(y)); 
2

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

  • < 0 - > T1较T2
  • 0 - > T1相同T2
  • > 0 - 晚于T2> T1是
+0

谢谢,我会查找它! –

2

它被称为lambda operator。来自MSDN;

=>令牌称为lambda运算符。它用在lambda 表达式中,用于分离左侧侧的输入变量与右侧侧的 拉姆达体。 Lambda表达式与Invisible 表达式类似,但更灵活;他们在用方法语法表达的LINQ查询中广泛使用了 。

对于分类操作,请使用Sort()这样的方法;

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

排序为int的名单=>是,你可以在这种情况下,把它作为一个匿名函数在JavaScript

lambda表达式运算符

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

1

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

在你的情况下,(x,y)将返回值DateTime.Compare(x.NotifDate, y.NotifDate)。 现在Sort() - 您的列表的功能将以某种方式对列表进行排序,具体取决于DateTime.Compare(x.NotifDate, y.NotifDate)的值。

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

1

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

我怎么可以排序我lstDMV,如果我选的整数,而不是日期?

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