2009-06-23 14 views
20

içinde IF deyimi Bir özelliği doldurmak için iki alanın değerlerini denetleyen bir "yeni seçin" içinde bir IF koşullu deyim oluşturmaya çalışıyorum.Bir LINQ SELECT

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

Sütunlar null olabilir ve bu nedenle sütun türleri DateTime? veri tipleri.

Yalnızca bir veya diğer sütunda datetime değeri olacaktır, her ikisi de değil.

Bunu yapmayı nasıl yaparım?

cevap

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

Mükemmel null coelacing operatörünü kullanın. Teşekkürler. – kntcnrg

+0

Güzel adam, ben Contact.Companies.FirstOrDefault() almaya çalışırken Contact.Companies dönen Windows Phone üzerinde bir NullReferenceException alıyordum ... Bir LINQ sorgusunda CompanyName bombalandı ... aşağıdaki işe yaradı! CompanyName = (c.Companies.Count()> 0)? c.Companies.FirstOrDefault(). CompanyName: "" –

3

bu

Status = e.col1.HasValue ? e.col1.Value ?? "This Value" : e.col2.Value ?? "Other Value" 
+1

Aslında OP'nin belirttiği şeyin tersini yapar. –

+1

evet haklısınız – Rony