C# Dynamic Linq - 案例陈述

标签 c# dynamic-linq

我在使用 Dynamic Linq 时遇到了一些问题,我希望有人能提供帮助。我面临的问题是我需要按特定顺序订购列表。在 SQL 中,我会这样写:

ORDER BY CASE WHEN Blah = 'blah' THEN 1 ELSE 0 END

我如何使用 Dynamic Linq 完成此操作?

我试过类似的方法:

listToSort.AsQueryable().OrderBy("CASE WHEN Blah = 'blah' THEN 1 ELSE 0 END")

但这会返回一个错误

No property or field 'CASE' exists in type

此代码在运行时作为表达式列表生成。 所以我使用 Dynamic Linq 将表达式用作字符串。

最佳答案

您可以使用 conditional operator :

listToSort.AsQueryable()
    .OrderBy(x => x.Blah == "blah" ? 1 : 0); 

您也可以使用它,因为 truefalse“更多”:

listToSort.AsQueryable()
    .OrderBy(x => x.Blah == "blah"); 

似乎不支持动态 LINQ CASE 或条件运算符。但是您可以使用另一个关键字:iif

listToSort.AsQueryable()
    .OrderBy("iif(Blah = 'blah', 1, 0)"); 

Overview动态 LINQ 表达式方法和关键字。

关于C# Dynamic Linq - 案例陈述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33541987/

相关文章:

linq - 动态 Linq 将 LIKE 添加到 where 子句

c# - 为 Entity Framework 创建动态表达式

c# - 避免按 。 (句点)键移动到日期时间选择器控件中的下一个字段

c# - 如何在工作项更改事件中获取对 TFS 工作项的引用?

c# - 使用自定义删除覆盖 EntityDataSource

c# - System.Linq.Dynamic 错误 类型 'StringComparison' 中不存在属性或字段 'Person'

c# - 构建一组可以对任何 linq 表进行操作的通用方法

c# - 检查当前Row是否为数据行

c# - 如何在Datagrid中为第一行设置颜色

c# - 将我的值类型转换为可空等效类型