【问题标题】:How to make string appear first in order by in linq statement如何在linq语句中使字符串按顺序首先出现
【发布时间】:2016-09-07 04:25:42
【问题描述】:

如何使用 Linq 执行以下 SQL 语句?

SELECT * FROM myTable
ORDER BY 
CASE myColumnName
WHEN 'Cats' THEN 1
WHEN 'Bear' THEN 2
ELSE 99
END, myColumnName

如果 myColumnName 包含动物列表并且我想按该列排序,但希望 Cats 首先出现在结果中,然后是熊,是否可以使用 Linq 语句来做到这一点?

【问题讨论】:

  • 有什么问题 - 只需创建 C# 条件表达式,例如from x in myTable orderby x.myColumnName == "Cats" ? 1 : x.myColumnName == "Bear" ? 2 : 99 select x

标签: c# linq entity-framework-4


【解决方案1】:

类似:

var res = from p in context.myTable
          let oOrder = ( p.myColumnName == "Cats" ? 1 :
                         p.myColumnName == "Bear" ? 2 : 99)
          orderby oOrder, p.myColumnName
          select p;

【讨论】:

  • 如果不是猫或熊,别忘了按列的值排序。
  • @StriplingWarrior,好收获。
【解决方案2】:

直接翻译可能如下所示:

myTable
    .OrderBy(t => 
        t.MyColumnName == "Cats" ? 1
        : t.MyColumnName == "Bears" ? 2
        : 99)
    .ThenBy(t => t.MyColumnName)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多