C# 忽略Linq orderby
您好,我不清楚为什么我的linq语句C# 忽略Linq orderby,c#,linq,C#,Linq,您好,我不清楚为什么我的linq语句orderby不能按预期工作 var q = from DirectoryInfo subDirectory in item.GetDirectories() orderby (item.Name == "TableDefinition" ? 1 : 2), item.Name select subDirectory; foreach (DirectoryInfo subDirectory i
orderby
不能按预期工作
var q = from DirectoryInfo subDirectory
in item.GetDirectories()
orderby (item.Name == "TableDefinition" ? 1 : 2), item.Name
select subDirectory;
foreach (DirectoryInfo subDirectory in q)
{
Execute(subDirectory);
}
我希望首先通过查看名称是否为“TableDefinition”对项目进行排序,然后仅通过名称进行排序
似乎只是按名称排序,按字母顺序升序。您必须使用
子目录
代替项
var q = from DirectoryInfo subDirectory
in item.GetDirectories()
orderby (subDirectory.Name == "TableDefinition" ? 1 : 2), subDirectory.Name
select subDirectory;
foreach (DirectoryInfo subDirectory in q)
{
Execute(subDirectory);
}
您必须使用
子目录
代替项
var q = from DirectoryInfo subDirectory
in item.GetDirectories()
orderby (subDirectory.Name == "TableDefinition" ? 1 : 2), subDirectory.Name
select subDirectory;
foreach (DirectoryInfo subDirectory in q)
{
Execute(subDirectory);
}
看见这可能就是解决方案。您需要在这里自定义IComparer iguess@hvd,是的,子目录名为“TableDefinition”@hvd正确。作为调试尝试,我可能会尝试查询的第一部分(从y中的x开始),缓存它,然后执行Orderby(…)的LINQ样式。然后执行Orderby(…)。它不应该改变结果,但无论如何我都会尝试。看。这可能就是解决方案。您需要在这里自定义IComparer iguess@hvd,是的,子目录名为“TableDefinition”@hvd正确。作为调试尝试,我可能会尝试查询的第一部分(从y中的x开始),缓存它,然后执行Orderby(…)的LINQ样式。然后执行Orderby(…)。它不应该改变结果,但无论如何我都会尝试。现在我很尴尬。@toddmo这就是为什么你应该总是使用Lambda表达式
var q=item.GetDirectories().OrderBy(x=>x.Name==“TableDefinition”?1:2)。然后是by(x=>x.Name)
现在我很尴尬。@toddmo这就是为什么你应该总是使用Lambda表达式var q=item.GetDirectories().OrderBy(x=>x.Name==“TableDefinition”?1:2)。然后使用(x=>x.Name)