Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 忽略Linq orderby_C#_Linq - Fatal编程技术网

C# 忽略Linq orderby

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

您好,我不清楚为什么我的linq语句
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)