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

时间:2012-03-29 09:56:50

标签: c# linq

我有这个LINQ查询:

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

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

那么,你怎么希望,我想把它们作为通常的订单或一天订购。 我该怎么办?

2 个答案:

答案 0 :(得分:1)

您可以将IEnumerable.OrderBy扩展方法与您自己的比较器一起使用:

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

当然,您必须先实施DaysOfWeekComparer()

答案 1 :(得分: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;