C# 如何在EFCore Select中编写内联If语句(SQL IIF)?

C# 如何在EFCore Select中编写内联If语句(SQL IIF)?,c#,sql,linq,entity-framework-core,C#,Sql,Linq,Entity Framework Core,我有以下客户表: 我的用例需要对实体表中的值进行列级许可 如何通过EFCore查询以下内容 在2中选择Id,First,IIFLocationId,Last,FROM Customer; 其中,仅当LocationId==2时才返回Last 这可以作为动态类型在Linq to实体中实现吗? 如果不是,我可以使用FromSql和吗? 我发现这是真的。但我不熟悉表达类型。然而,这意味着它是可能的。 我相信您希望使用.Select方法和三元运算符。比如说: context.Customer.Selec

我有以下客户表:

我的用例需要对实体表中的值进行列级许可

如何通过EFCore查询以下内容

在2中选择Id,First,IIFLocationId,Last,FROM Customer; 其中,仅当LocationId==2时才返回Last

这可以作为动态类型在Linq to实体中实现吗? 如果不是,我可以使用FromSql和吗? 我发现这是真的。但我不熟悉表达类型。然而,这意味着它是可能的。
我相信您希望使用.Select方法和三元运算符。比如说:

context.Customer.Select(c => new { c.Id, c.First, Last = c.LocationId == 2 ? c.Last : "" });

为什么要在SQL中这样做?似乎在SQLEF中实现它的困难很容易被调用者所取代。IIF基本上是大小写表达式的语法糖。。。为什么不直接使用C三元运算符?从Customer中的c中选择new{c.Id,c.First,Last=new[]{2}.Containsc.LocationId?c.Last:}Sweet!,非常感谢。我对错过这一点感到无知。还要感谢@NetMage
context.Customer.Select(c => new { c.Id, c.First, Last = c.LocationId == 2 ? c.Last : "" });