Вопрос по linq-to-sql – IF оператор внутри LINQ SELECT

23

Я пытаюсь создать условный оператор IF внутри элемента "выбрать новый" который проверяет значения двух полей, чтобы заполнить свойство.

<code>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")
}
</code>

Столбцы обнуляются и, следовательно, типы столбцов DateTime? типы данных.

Только один или другой столбец будет иметь значение datetime, но не оба.

Как мне сделать это ???

Ваш Ответ

2   ответа
49
Status = e.col1.HasValue ? "This Value" : (e.col2.HasValue ? "Other Value" : null)
Отлично. Благодарю. kntcnrg
Вы, красавчик, я получал исключение NullReferenceException на Windows Phone при возврате Contact.Companies ... пытался получить Contact.Companies.FirstOrDefault (). CompanyName в запросе LINQ подвергался бомбардировке ... следующее прекрасно сработало! CompanyName = (c.Companies.Count () & gt; 0)? c.Companies.FirstOrDefault (). CompanyName: & quot; & quot;
3

используйте для этого нулевой оператор

Status = e.col1.HasValue ? e.col1.Value ?? "This Value" : e.col2.Value ?? "Other Value"
да ты прав
На самом деле это делает обратное тому, что указывает OP.

Похожие вопросы