我有這樣的LINQ查詢:我如何根據自己的規則訂購清單?
IEnumerable<MyScheda> schede = from MyScheda scheda in new MySchede()
select scheda;
,我想根據現場scheda.Note
,它可以包含週六,週一,週日,等等訂購此名單。
所以,你想怎麼樣,我想按照慣常的順序或一天來訂購它們。 我該怎麼辦?
我有這樣的LINQ查詢:我如何根據自己的規則訂購清單?
IEnumerable<MyScheda> schede = from MyScheda scheda in new MySchede()
select scheda;
,我想根據現場scheda.Note
,它可以包含週六,週一,週日,等等訂購此名單。
所以,你想怎麼樣,我想按照慣常的順序或一天來訂購它們。 我該怎麼辦?
您可以使用IEnumerable.OrderBy
擴展方法與自己的比較器:
IEnumerable<MyScheda> schede = (from MyScheda scheda in new MySchede()
select scheda).OrderBy(s => s.Note, new DaysOfWeekComparer());
當然
之前已實現DaysOfWeekComparer()
。
在這裏查看我的答案,瞭解實現'DaysOfWeekComparer'的方法。 [如何在插入到列表時執行基於規則的對象排序](http://stackoverflow.com/q/9886148) – 2012-03-29 10:09:11
您可以通過使用排序依據請求排序:
List<String> names=new List<String>();
...
foreach(String name in from String s in names orderby s.Length select s)
{
...
}
在你的情況,我相信你會希望使用:
orderby scheda.Note
這是假設,當然,該類型的Note可以比較訂購。如果它不能直接進行比較,您將需要編寫一個一些代碼轉換爲「注型」可排序類型,然後使用,而不是注意直接,就像這樣:
int NoteIndexer(NoteType n);
IEnumerable<MyScheda> schede = from MyScheda scheda in new MySchede()
orderby NoteIndexer(scheda.Note)
select scheda;
如果Note是字符串/ varchar字段,它將不會按天順序排序 – MarcinJuraszek 2012-03-29 10:09:47
已授予,我的回覆確實取決於他希望他們的順序的可比類型。但是,沒有關於註釋類型的附加信息。如果有更多的信息出現,我們可以稍微解釋一下這個解決方案,但是您認爲這種迴應是一個合理的起點嗎? – Omaha 2012-03-29 10:12:16
這是一個好的起點,但它可能提到了該字段在答案中是正確類型的要求。 :) – 2012-03-29 10:17:03
是什麼類型的'筆記'字段? – 2012-03-29 09:59:13
另請參閱我的答案在這裏:[如何在插入到列表時執行基於規則的對象排序](http://stackoverflow.com/questions/9886148/9910401#9910401)使用該定義星期一<星期二,星期二<星期三等。 – 2012-03-29 09:59:44