首页 文章

如何根据自己的规则订购列表?

提问于
浏览
0

我有这个LINQ查询:

IEnumerable<MyScheda> schede = from MyScheda scheda in new MySchede()
                               select scheda;

我想根据字段 scheda.Note 订购此列表,该字段可包含星期六,星期一,星期日等 .

所以,你怎么希望,我想订购它们作为通常的订单或一天 . 我该怎么做?

2 回答

  • 1

    您可以在自己的比较器中使用IEnumerable.OrderBy扩展方法:

    IEnumerable<MyScheda> schede = (from MyScheda scheda in new MySchede()
                                   select scheda).OrderBy(s => s.Note, new DaysOfWeekComparer());
    

    当然你必须先实现 DaysOfWeekComparer() .

  • 0

    您可以使用 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;
    

相关问题