我有一个字符串列表,我想订购它们。
IEnumerable<String> strings = ...;
strings = strings.OrderBy(a => a);
我没有得到的是lambda表达式a => a的要点。首先,我认为我可以像这样一样提取属性和顺序。
IEnumerable<Something> somethings = ...;
IEnumerable<String> strings = somethings.OrderBy(a => a.StringProperty);
但这不能编译。所以我必须这样走。
IEnumerable<Something> somethings = ...;
IEnumerable<String> strings = somethings.Select(a
=> a.StringProperty).OrderBy(a => a);
那么,为什么我必须在OrderBy命令中使用lambda表达式?
lambda表示“您要订购的商品”。
如果您带了一组人,并在他们的生日之前订购了他们,那么您仍然有一组人,而不是一组生日;IE
IEnumerable<Person> people = ...;
IEnumerable<Person> sorted = people.OrderBy(a => a.DateOfBirth);
那么同样,订购了一套Something
由sStringProperty
还导致了一组Something
S:
IEnumerable<Something> somethings = ...;
IEnumerable<Something> sorted = somethings.OrderBy(a => a.StringProperty);
在某些(极少数)情况下,您实际上的意思是“并根据事物本身对其进行排序”。这通常仅适用于IEnumerable<string>
或IEnumerable<int>
-之类的事物,因此带来的不便.OrderBy(x => x)
是微不足道的。如果让您感到困扰,您总是可以编写扩展方法来隐藏此细节。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句