我有这段代码,我知道它正在整理列表lstDMV
。但请帮我分解一下。C# - 列表排序 - x和y
lstDMV.Sort((x, y) => DateTime.Compare(x.NotifDate, y.NotifDate));
=>
是什么意思?它是如何工作的基于从比较函数返回的整数?
如何排序我的lstDMV
如果我排序整数而不是日期?
我有这段代码,我知道它正在整理列表lstDMV
。但请帮我分解一下。C# - 列表排序 - x和y
lstDMV.Sort((x, y) => DateTime.Compare(x.NotifDate, y.NotifDate));
=>
是什么意思?它是如何工作的基于从比较函数返回的整数?
如何排序我的lstDMV
如果我排序整数而不是日期?
拉姆达操作者=>
在
lstDMV.Sort((x, y) => DateTime.Compare(x.NotifDate, y.NotifDate));
基本上创建具有一个代码块到excecute新delegare。 x和y作为参数过去。
你可以通过代码更改为
lstDMV.Sort((x, y) => x.CompareTo(y));
它被称为lambda expression。 对于比较本身,请看DateTime.Compare方法。看到它的返回值:
谢谢,我会查找它! –
它被称为lambda operator
。来自MSDN;
=>令牌称为lambda运算符。它用在lambda 表达式中,用于分离左侧侧的输入变量与右侧侧的 拉姆达体。 Lambda表达式与Invisible 表达式类似,但更灵活;他们在用方法语法表达的LINQ查询中广泛使用了 。
对于分类操作,请使用Sort()
这样的方法;
lstDMV.Sort((int1, int2) => int1.CompareTo(int2));
排序为int的名单=>是,你可以在这种情况下,把它作为一个匿名函数在JavaScript
lambda表达式运算符
lstDMV.Sort((x,y)=> DateTime.Compare(x.NotifDate,y.NotifDate)); 它正在创建一个正在用作排序事件处理程序的函数。 编译器可以推断x和y的类型,因为它知道Close delelegate的定义。
首先,这些是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 这非常有帮助。
(其他人已经回答了你的问题的lambda operator
部分)
我怎么可以排序我lstDMV,如果我选的整数,而不是日期?
ints.Sort((i1, i2) => i1.CompareTo(i2));
您可能需要在[lambda表达式]读了(http://msdn.microsoft.com/en-us/library/bb397687.aspx)。 – psantiago
他们称为[lamda表达式](http://msdn.microsoft.com/en-us/library/bb397687.aspx) – spajce
什么是巧合评论:D – spajce