2009-03-09 13 views
5

Tengo dos tablas en un conjunto de datos XML. T1, T2. Cada una de las tablas tiene una columna de ID.Necesita ayuda con una consulta de unión interna opuesta a LINQ

T1 tiene una lista de clientes T2 tiene una lista de pedidos

Quiero construir una consulta LINQ que devuelve sólo el ID de los clientes que no tienen órdenes. En otras palabras, ID de cliente que no existen en la tabla T2.

Oh sí, estoy usando C#

Gracias!

Respuesta

6

creo que esto va a funcionar (por favor adaptarse a sus conjuntos de datos):

var query = from c in T1 
      where !(from o in T2 select o.CustomerID) 
      .Contains(c.CustomerID) 
      select c; 
+0

Wow - ¡Eso fue simple! Gracias por la ayuda – Rick

1

Sólo es necesario que nos una cláusula where y todos:

T1.Where(item1 => T2.All(item2 => item1.ID != item2.ID)); 
+0

¡Parece que eso también hubiera funcionado! Gracias por la ayuda. – Rick

7

Esto requiere una combinación externa y un cheque en nulo.

var result = from c in Customers 
      join d in Details on d.CustomerID equals c.ID into g 
      where !g.Any() 
      select c; 
+0

Esto parece ser más rápido que la respuesta aceptada – Stefanvds

Cuestiones relacionadas