studio - linqpad sql to linq
La mejor forma de recuperar resultados de registros individuales en LINQ to SQL (6)
¿Por qué no algo así como
var user = dc.Users.SingleOrDefault(u=> u.UserName==usn);
Si consulto una tabla con una condición en el campo clave como en:
var user = from u in dc.Users
where u.UserName == usn
select u;
Sé que obtendré cero resultados o un resultado. ¿Debo seguir adelante y recuperar los resultados usando un for-each o hay otra forma preferida de manejar este tipo de situación?
Pruebe algo como esto:
var user = (from u in dc.Users
where u.UserName == usn
select u).FirstOrDefault();
El método FirstOrDefault devuelve el primer elemento de una secuencia que satisface una condición especificada o un valor predeterminado si no se encuentra dicho elemento.
También debe tenerse en cuenta que First / FirstOrDefault / Single / SingleOrDefault son el punto de ejecución de un comando LINQ a Sql. Dado que la instrucción LINQ no se ha ejecutado antes de eso, puede afectar el SQL generado (por ejemplo, puede agregar un TOP 1 al comando sql)
Usaría el método SingleOrDefault.
var user = (from u in dc.Users
where u.UserName == usn
select u).SingleOrDefault();
Yo usaría First () o FirstOrDefault ().
La diferencia: en First () se lanzará una excepción si no se puede encontrar ninguna fila.
Otra opción es usar Contiene (nombre de usuario) en lugar de "=="
var user = (from u in dc.UserInfo
where u.Users.Contains(username)
select u).SingleOrDefault();