Forums Últimos mensajes - Powered by IBM
 

Linq Distinc con anomimos me da error si hay null

23/04/2010 - 12:06 por Paul | Informe spam
Hola,
Como puedo hacer esta consulta con Linq y anonimos:
SELECT DISTINCT IdTabla2, Nombre
FROM Tabla1
WHERE idTabla2 != null

Si hago esto me da un error cuando idTabla2 es null
bindingSource1.DataSource=MyDataSet.Table1.Select(c=> new
{Id=c.IdTabla2, Nombre=c.Nombew }.Distinct();

Alguna idea
 

Leer las respuestas

#1 Alberto Poblacion
23/04/2010 - 12:48 | Informe spam
"Paul" wrote in message
news:
Hola,
Como puedo hacer esta consulta con Linq y anonimos:
SELECT DISTINCT IdTabla2, Nombre
FROM Tabla1
WHERE idTabla2 != null

Si hago esto me da un error cuando idTabla2 es null
bindingSource1.DataSource=MyDataSet.Table1.Select(c=> new
{Id=c.IdTabla2, Nombre=c.Nombew }.Distinct();



Puedes filtar los nulls con un where:

var query = from c in MyDataSet.Table1.AsEnumerable()
where c.IdTabla2!=null
select new {Id=c.IdTabla2, Nombre=c.Nombew };
bindingSource1.DataSource = query.Distinct();

Si esto lo haces con linq-to-sql, el "!=null" se traduce por una
sentencia "IS NOT NULL". Pero si lo haces con linq-to-objects, realmente
comprueba que el objeto no sea null. Ten presente que si la tabla la has
cargado desde base de datos, los NULL del servidor no se convierten a null
en memoria, sino a DbNull.Value, que es un valor distinto de null y por
tanto no lo filtra la sentencia anterior. Estos valores darán un error si
los intentas meter en un campo Id numérico. Todo depende de cómo hayas
cargado la tabla; tendrás que repasarlo a ver cuáles son de verdad los
valores que tienes cargados, y filtrarlos consecuentemente con una cláusula
adecuada.

Preguntas similares