2009-06-23 62 views
20

Estoy tratando de producir una declaración condicional IF dentro de un "seleccionar nuevo" que comprueba los valores de dos campos para completar una propiedad.instrucción IF dentro de un 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") 
} 

Las columnas son anulable y por lo tanto los tipos de columna son DateTime? tipos de datos.

Solo una u otra columna tendrá un valor de fecha y hora, no ambos.

¿Cómo puedo hacer esto?

Respuesta

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

perfecto. Gracias. – kntcnrg

+0

Eres un hombre hermoso, obtenía una NullReferenceException en Windows Phone cuando devolvía Contact.Companies ... intentaba contactar a Contact.Companies.FirstOrDefault(). CompanyName en una consulta LINQ estaba cayendo en picado ... ¡Lo siguiente funcionó muy bien! CompanyName = (c.Companies.Count()> 0)? c.Companies.FirstOrDefault(). CompanyName: "" –

3

uso, el usuario coelacing nulo para este

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

En realidad, hace lo contrario de lo que especifica el OP. –

+1

sí, tienes razón – Rony

Cuestiones relacionadas