我有一个字符串列表,我想订购它们.
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表示"你想要订购什么".
如果你带一群人,并在他们的生日订购,你仍然有一组人 - 而不是一组生日; 即
IEnumerable<Person> people = ...;
IEnumerable<Person> sorted = people.OrderBy(a => a.DateOfBirth);
所以类似地,按顺序排序一组Somethings会StringProperty产生一组Somethings:
IEnumerable<Something> somethings = ...;
IEnumerable<Something> sorted = somethings.OrderBy(a => a.StringProperty);
在一些(很少)的情况下,你实际上意味着"并通过事物本身对其进行排序".这通常只适用于像IEnumerable<string>或者IEnumerable<int>- 因此轻微的不便.OrderBy(x => x)是微不足道的.如果它困扰你,你总是可以写一个扩展方法来隐藏这个细节.
| 归档时间: | 
 | 
| 查看次数: | 196 次 | 
| 最近记录: |