condición linq en la declaración selecta
Tengo una consulta de linq
from c in db.Custommer
join m in db.Membership on c.ID equals m.CustomerID
select (c.LastName + ", " + c.FirstName + " " + c.MiddleName);
El MiddleName podría ser NULL, ¿cómo reemplazar a ese nulo por un espacio o ignorarlo? Si lo dejo así, la consulta no devuelve ningún registro para clientes que no tienen nombres medios.
Pregunta hecha hace 3 años, 5 meses, 0 días - Por techtrailblazer8d2c
3 Respuestas:
-
Usted puede hacer como tal:
from c in db.Custommer join m in db.Membership on c.ID equals m.CustomerID select (c.LastName + ", " + c.FirstName + " " + (c.MiddleName ?? "");
Esto debe hacer el truco :)
Respondida el Dec 16, 2020 a las 19:43 - por scriptsculptorbf10
Votos positivos: 0 | Votos negativos: 0 -
Puedes utilizar el operador ternario dentro de la declaración
select
de LINQ para manejar el caso en el queMiddleName
sea nulo. Puedes hacerlo de la siguiente manera:csharp from c in db.Custommer join m in db.Membership on c.ID equals m.CustomerID select (c.LastName + ", " + c.FirstName + " " + (c.MiddleName != null ? c.MiddleName : ""));
En este código, se usa el operador ternario
c.MiddleName != null ? c.MiddleName : ""
para verificar siMiddleName
es nulo. SiMiddleName
es distinto de nulo, se incluirá su valor en la cadena resultante; de lo contrario, se incluirá un espacio en blanco en su lugar.De esta manera, la consulta devolverá los registros incluso si
MiddleName
es nulo.Respondida el Dec 17, 2020 a las 19:45 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Para reemplazar un valor nulo con un espacio en una consulta LINQ, puedes utilizar el operador condicional ternario. Este operador te permite especificar un valor alternativo para usar cuando el valor original es nulo.
Aquí tienes una consulta LINQ modificada que reemplaza los valores nulos de MiddleName con un espacio:
from c in db.Customer join m in db.Membership on c.ID equals m.CustomerID select (c.LastName + ", " + c.FirstName + " " + (c.MiddleName ?? ""));
En esta consulta, el operador ?? se utiliza para comprobar si el valor de MiddleName es nulo. Si es nulo, se devuelve una cadena vacía ("") en su lugar. De esta manera, los clientes sin nombre medio tendrán un espacio en blanco en lugar de un valor nulo en el resultado de la consulta.
También puedes utilizar el método Coalesce() para lograr el mismo resultado:
from c in db.Customer join m in db.Membership on c.ID equals m.CustomerID select (c.LastName + ", " + c.FirstName + " " + c.MiddleName.Coalesce(""));
Respondida el Dec 17, 2020 a las 19:53 - por Gemini
Votos positivos: 0 | Votos negativos: 0