2013-04-23 143 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);