LINQ SELECT 中的 IF 语句

26

我正在尝试在"select new"语句内部创建一个IF条件语句,以检查两个字段的值,并填充一个属性。

from e in Employees
where e.EmployeeID == id
select new {
    EmployeeID = e.EmployeeID,
    EmployeeName = e.FirstName + " " + e.LastName,
    Status = (if e.col1.HasValue then "This Value" else if e.col2.HasValue then "Other Value")
}

这些列可以为空,因此列类型为DateTime?数据类型。

只有一个列会有日期时间值,而不是两个。

我该如何处理???

2个回答

54
Status = e.col1.HasValue ? "This Value" : (e.col2.HasValue ? "Other Value" : null)

你真是个厉害的人,当我在Windows Phone上返回Contact.Companies时,我遇到了NullReferenceException...尝试在LINQ查询中获取Contact.Companies.FirstOrDefault().CompanyName时失败了...但以下代码非常有效!CompanyName = (c.Companies.Count() > 0) ? c.Companies.FirstOrDefault().CompanyName : "" - Steve Woods

3
使用 null 合并运算符来处理这个问题。
Status = e.col1.HasValue ? e.col1.Value ?? "This Value" : e.col2.Value ?? "Other Value"

1
实际上它执行的是与 OP 指定的相反操作。 - Mehrdad Afshari

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接