c# - 等效于 SQL 语句的 LINQ 语句

标签 c# linq c#-4.0 linq-to-sql

我有一个包含五列的表格。前四列中只有一列有值,其他列一次为空,我需要从表行中获取非空值并检查第五列。根据我的要求,下面的 sql 语句工作正常。但我需要使用 LINQ 做同样的事情。请建议我如何使用 LINQ 实现相同的目标?或等效的 LINQ 语句?

 SELECT 
   CASE 
      WHEN col1 is not null THEN col1 
      WHEN col2 is not null  THEN col2 
      WHEN col3 is not null  THEN col3 
      WHEN col4 is not null  THEN col4 
   END 
 FROM MyTable where col5 ='abc'

最佳答案

第一件事。你的sql不对。它必须是 SELECT COALESCE(col1,col2,col3,col4) AS COL FROM MyTable where col5 ='abc'

var myObj = db.MyTable.Where(s => s.Col5 == 'abc').Select(s=> new {COL = s.col1??s.col2??s.col3??s.col4??"" })

关于c# - 等效于 SQL 语句的 LINQ 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35171291/

相关文章:

c# - 如何在 Dynamics CRM 中将日期时间字段转换为日期?

c# - 如何从 linq 或 IQueryable 对象获取可执行的 sql 语句?

c# - linq在何处和选择上的歧义

c# - 为什么我们的项目需要接口(interface)层/抽象类?

c# - 从另一个列表 LINQ 获取仅包含第一个和最后一个字符的字符串列表

c#-4.0 - 尝试使用 Oracle Data Access ODP.NET 11.2 执行 ExecuteReader() 时出现 InvalidOperationException

c# - 忽略元数据覆盖?

c# - 无法访问 FHIR 模型中的 Procedure.reason

c# - ASP.NET MVC 身份密码 RequiredLength

c# - Linq 的 FirstOrDefault 充当其他类型?