Mic*_*ris 13 c# entity-framework
我想知道是否有人知道如何在Entity Framework中表达它在纯SQL中的含义:
SELECT Name, IsEmployee, IsQualityNetwork
FROM Person
ORDER BY CASE WHEN IsQualityNetwork = 1 or IsEmployee = 1 THEN 0 ELSE 1 END, Name
Run Code Online (Sandbox Code Playgroud)
我尝试使用Linq Dynamic但是当执行此代码时:
var p = ctx.People
.OrderBy("CASE WHEN IsQualityNetwork = 1 or IsEmployee = 1 THEN 0 ELSE 1 END")
.OrderBy(e => e.Name);
Run Code Online (Sandbox Code Playgroud)
我得到例外:{"类型'人'中没有属性或字段'CASE'"}
Adu*_*cci 15
var p = ctx.People.OrderBy(p => (p.IsQualityNetwork == 1 || p.IsEmployee == 1) ? 0 : 1)
.ThenBy(p => p.Name);
Run Code Online (Sandbox Code Playgroud)
这是您的 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,
}
Run Code Online (Sandbox Code Playgroud)
我使用了流畅的查询语法,所以我可以向您展示let关键字。 let允许您声明一个可以在查询中重用的范围变量,如果您有一个在很多地方使用的条件,或者如果您需要链接多个条件,这将非常有用。
| 归档时间: |
|
| 查看次数: |
5349 次 |
| 最近记录: |