¿Cómo utilizo un operador?: En la cláusula SELECT de una consulta LINQ? Si esto no se puede hacer, ¿cómo puedo emular uno? El objetivo es obtener un bloque CASE en mi cláusula de selección. Como podría sospechar, recibo un error: Declarador de miembro de tipo anónimo no válido. Los miembros de tipo anónimo deben declararse con una asignación de miembro, nombre simple o acceso de miembro.?: Operador en consulta LINQ
¿Es esta la manera correcta, o una manera suficiente, para decir "de una combinación interna i en a.ipid = i.id join interno u en i.uid = u.id"? Si no, por favor proporcione uno. Gracias.
var query = from a in db.tblActivities from i in db.tblIPs from u in db.tblUsers select new { u.UserName == null ? i.Address : u.UserName, a.Request, a.DateTime };
Respuesta
Al crear un tipo anónimo (lo que está haciendo con el "nuevo" sin especificar un tipo) debe especificar el nombre del miembro para cada propiedad. De su ejemplo, se vería algo como esto: (también fija su une)
var query = from a in db.tblActivities
join i in db.tblIPs on a.ipid equals i.id
join u in db.tblUsers on i.uid equals u.id
select new {
UserName = (u.UserName ?? i.Address),
Request = a.Request,
Date = a.DateTime
};
Probablemente se podría hacer el nombre del usuario a su manera, también:
UserName = (u.UserName == null) ? i.Address : u.UserName,
pero el ?? el operador es más conciso. Es similar a "isnull" en SQL.
Soy bastante nuevo a LINQ to SQL, pero estoy bastante seguro de que sería algo así:
var query =
from a in db.tblActivities
from i in a.tblIPs
from u in i.tblUsers
select new
{
userName = (u.UserName == null)
? i.Address
: u.UserName,
a.Request,
a.DateTime
};
La sentencia if tiene que estar entre paréntesis y los resultados fuera de ellos. En cuanto a las uniones, sigues la cadena desde uno-> muchos.
Debe usar la palabra clave join y definir la relación entre las entidades para realizar una unión interna adecuada.
Here puede encontrar algunos ejemplos al respecto, también le recomiendo que obtenga LinqPad, es una herramienta realmente valiosa para probar sus consultas, también es muy bueno para aprender, tiene más de 200 ejemplos.
Gracias ... +1, nunca escuché de Linqpad, muy útil; ¡Gracias! – tsilb
si solo está buscando null, también puede usar ??
string something = null;
string somethingElse = something ?? "default value";
En cuanto a los ejemplos anteriores, es correcto hacer los que van ...
string something = (somethingElse == null ? "If it is true" : "if it is false");
no se requieren los parens, pero sí ayuda en la lectura.
Realmente. esta pregunta depende de la implementación particular de IQueryable que devolverá su expresión linq. Veo que tiene db.XXX, ¿está utilizando linq para sql o algún linq para almacenar datos? De ser así, la implementación específica de IQueryable necesitará una forma de traducir su expresión a una expresión de tienda. Aparte de los comentarios anteriores, algunos de los otros comentarios son correctos, en un tipo anónimo debe especificar un nombre para cada miembro. Este es realmente tu error.
- 1. Operador "IN" en Linq
- 2. LINQ: El operador de consulta 'ElementAtOrDefault' no es compatible
- 3. compleja consulta LINQ
- 4. Eliminar consulta en Linq
- 5. LINQ consulta
- 6. Operador de Linq IN
- 7. ¿Qué hace esta consulta LINQ?
- 8. Operador de Linq a Sql 'Where Or'
- 9. fechas en consulta utilizando LINQ
- 10. InvalidCastException en una consulta LINQ
- 11. C# ?? nulo coalescente operador LINQ
- 12. LINQ Consulta dinámica Biblioteca
- 13. dinámicamente generar LINQ consulta
- 14. ASP.NET MVC LINQ consulta
- 15. Intersecar consulta LINQ
- 16. Consulta DataColumnCollection con LINQ
- 17. xmlnode consulta utilizando LINQ
- 18. Cómo utilizar el operador IN en linq
- 19. Operador Me gusta en LINQ to Objects
- 20. aplanamiento LINQ Grupo consulta
- 21. Cuando, en consulta con matriz en LINQ
- 22. Genérico predicado de consulta LINQ?
- 23. Exportar a csv - consulta Linq
- 24. Encuadernación LINQ consulta a DataGridView
- 25. LINQ Orden por consulta descendente
- 26. Convertir consulta SQL a LINQ
- 27. Escritura 'contiene' consulta utilizando LINQ
- 28. consulta LINQ to XML atributos
- 29. error LINQ - "NotSupportedException: sobrecarga no compatible utilizado para operador de consulta 'Seleccionar'"
- 30. Analizar cadena en una consulta LINQ
Impresionante.Eso estuvo muy cerca, y me llevó a la respuesta: desde a en TblActivities join i en TblIP en a.IPID es igual a i.ID únete a ti en TblUsers en a.UID igual a u.ID selecciona nuevo {UserName = (u.UserName? i.Address), Request = a.Request, Date = a.DateTime} – tsilb
Si ve mi ejemplo, puede omitir las instrucciones de combinación utilizando los alias de la tabla. – LeppyR64
Sin las combinaciones, acaba de implementar una unión cartesiana (producto cruzado). Si cada mesa tuviera 10 filas, obtendría 1000 resultados. Créame, REALMENTE quiere que esas uniones estén allí. – GalacticCowboy