C# 在LINQ to Entities查询中,是否可以使用带有OrderBy的CASE语句?
我想知道是否有人可以将下面的SQL转换为LINQ to Entities查询C# 在LINQ to Entities查询中,是否可以使用带有OrderBy的CASE语句?,c#,entity-framework,C#,Entity Framework,我想知道是否有人可以将下面的SQL转换为LINQ to Entities查询 SELECT Name, IsEmployee, IsQualityNetwork FROM Person ORDER BY CASE WHEN IsQualityNetwork = 1 or IsEmployee = 1 THEN 0 ELSE 1 END, Name 我尝试使用Linq Dynamic,但执行此代码时: var p = ctx.People .OrderBy("CASE WHEN IsQu
SELECT Name, IsEmployee, IsQualityNetwork
FROM Person
ORDER BY CASE WHEN IsQualityNetwork = 1 or IsEmployee = 1 THEN 0 ELSE 1 END, Name
我尝试使用Linq Dynamic,但执行此代码时:
var p = ctx.People
.OrderBy("CASE WHEN IsQualityNetwork = 1 or IsEmployee = 1 THEN 0 ELSE 1 END")
.OrderBy(e => e.Name);
我得到一个例外:
{“Person”类型中不存在属性或字段“CASE”}以下是SQL到LINQ的翻译
var query = from p in ctx.People
let order = p.IsQualityNetwork || p.IsEmployee ? 0 : 1
orderby order, p.Name
select new
{
p.Name,
p.IsEmployee,
p.IsQualityNetwork,
}
我使用了流畅的查询语法,因此我可以向您显示let
关键字let
允许您声明一个范围变量,然后可以在查询中重用该变量。如果您有一个在很多地方使用的条件,或者如果您需要链接多个条件,这将非常有用
var p = ctx.People.OrderBy(p => (p.IsQualityNetwork == 1 || p.IsEmployee == 1) ? 0 : 1)
.ThenBy(p => p.Name);