我有这个LINQ查询:
IEnumerable<MyScheda> schede = from MyScheda scheda in new MySchede() select scheda;
我想根据字段 scheda.Note 订购此列表,该字段可包含星期六,星期一,星期日等 .
scheda.Note
所以,你怎么希望,我想订购它们作为通常的订单或一天 . 我该怎么做?
您可以在自己的比较器中使用IEnumerable.OrderBy扩展方法:
IEnumerable<MyScheda> schede = (from MyScheda scheda in new MySchede() select scheda).OrderBy(s => s.Note, new DaysOfWeekComparer());
当然你必须先实现 DaysOfWeekComparer() .
DaysOfWeekComparer()
您可以使用 orderby 请求订购:
List<String> names=new List<String>(); ... foreach(String name in from String s in names orderby s.Length select s) { ... }
在你的情况下,我相信你会想要使用:
orderby scheda.Note
当然,这假定可以比较Note的类型以进行排序 . 如果无法直接比较,则需要编写一些将“Note-type”转换为可排序类型的代码,然后直接使用它而不是Note,如下所示:
int NoteIndexer(NoteType n); IEnumerable<MyScheda> schede = from MyScheda scheda in new MySchede() orderby NoteIndexer(scheda.Note) select scheda;
2 回答
您可以在自己的比较器中使用IEnumerable.OrderBy扩展方法:
当然你必须先实现
DaysOfWeekComparer()
.您可以使用 orderby 请求订购:
在你的情况下,我相信你会想要使用:
当然,这假定可以比较Note的类型以进行排序 . 如果无法直接比较,则需要编写一些将“Note-type”转换为可排序类型的代码,然后直接使用它而不是Note,如下所示: