2013-04-23 199 views
1

我有一個類型的集合:LINQ查詢排序集合

IEnumerable<FileInfo> files; 

我想要的文件,以便與名稱的所有文件「index.js」將出現在排序名單的開頭。我不介意其他文件如何排序。

這是什麼LINQ查詢?

+2

@HenriCook:爲什麼? 'OrderBy'有什麼問題? – 2013-04-23 18:56:50

回答

12

方法的語法

files = files.OrderBy(x => x.Name == "index.js" ? 0 : 1); 

查詢語法

files = from x in files 
     orderby x.Name == "index.js" ? 0 : 1 
     select x; 
+1

@DanielHilgarth - 謝謝,我把它清理乾淨了 – Aducci 2013-04-23 19:02:22

+0

你可以使用files.OrderByDescending(x => x.Name.ToLower()==「index.js」); – 2013-04-23 19:05:09

+0

OrderBy完全適用於布爾鍵,所以它不需要使用三元運算符;) – 2kay 2013-04-23 19:05:19

0

這裏有一個 「聰明」 的方式:

IEnumerable<FileInfo> ordered = files.OrderBy(x => "index.js".Equals(x.Name) ? 0 : 1); 
2

嘗試這樣;

var f = files.OrderBy(x => "index.js".Equals(x.Name) ? 0 : 1);