Linq to sql linq到sql中的自定义orderby

Linq to sql linq到sql中的自定义orderby,linq-to-sql,Linq To Sql,我已经搜索了归档文件,但找不到适用于linq to sql的解决方案 如何在LINQtoSQL中创建自定义orderby,以便它生成如下sql代码 ORDER BY CASE SEASON WHEN 'WINTER' THEN 1 WHEN 'SPRING' THEN 2 WHEN 'SUMMER' THEN 3 WHEN 'AUTUMN' THEN 4 END 请注意,自定义比较器似乎无法编译,本教程中所述的OrderByWeight似乎不存在 注 我希望排序在sql ser

我已经搜索了归档文件,但找不到适用于linq to sql的解决方案

如何在LINQtoSQL中创建自定义orderby,以便它生成如下sql代码

ORDER BY
CASE SEASON
  WHEN 'WINTER' THEN 1
  WHEN 'SPRING' THEN 2
  WHEN 'SUMMER' THEN 3
  WHEN 'AUTUMN' THEN 4
END
请注意,自定义比较器似乎无法编译,本教程中所述的OrderByWeight似乎不存在


我希望排序在sql server上进行,而不是在c中进行,因为这会给我不同的结果,因为我正在对结果进行分区。

您必须像以前一样首先在内部循环中选择数据,然后从该结果中选择数据,并在自定义列上正常排序:

从我头上

from s in
  (from x in y select new { Sort = x.z == 'WINTER' ? 1 : x.z == 'SPRING' ? 2 : [...], Data = x })
orderby s.Sort
select s.Data
诸如此类


希望这有帮助这里有一个使用lambda表达式的方法


+1,因为我相信这将实际编译成一个案例。你的解决方案是有意义的。谢谢只是LINQtoSQL似乎不喜欢使用不属于原始数据源的变量。请记住,我希望在SQL server上使用已经存在的字段完成案例,因此排序值不太有效。但逻辑是有道理的。

MyTable
   .OrderBy (t => (t.Season == "Winter") ? 1 : (t.Season == "Spring") ? 2 : [...])
   .Select (
      t => new
{ MyColumn = t.MyColumn ... } )