2013-02-04 9 views
7

Ho una lista di prodotti come questoOttenere tutti tranne dal database SQL utilizzando Entity Framework

var r = db.Products.Where(x => x.Sites 
           .Where(z => z.Key == associatedProducts.Key) 
           .Any() 
       ).ToList() 

esiste un'entità chiamata Products, voglio ottenere tutti gli elementi da prodotti ad eccezione di quelli esistere in associatedProducts.Products

Come posso farlo?

+0

puoi mostrare il codice relativo alla creazione di prodotti associati? – daryal

risposta

14

La seguente query funziona se la lista associatedProducts vengono recuperati utilizzando EF in una query previos.

var temp = db.Products.ToList().Except(associatedProducts).ToList(); 

altrimenti, se associatedProducts è un elenco che non è stata scaricata utilizzando EF (supponendo Key è un numero intero);

List<int> tempIdList = associatedProducts.Select(q => q.Key).ToList(); 
var temp = db.Products.Where(q => !tempIdList.Contains(q.Key)); 
+0

Brillante la seconda opzione ha funzionato! Grazie –

+0

@MohamedNaguib è contento che abbia funzionato. – daryal

-3

È possibile caricare l'elenco di prodotti che si desidera escludere e quindi .Exclude() dall'elenco di tutti i prodotti.

+2

-1 Non riesco a trovare "Escludi" definito ovunque. –

0
  var query = from p in db.Products 
         where !(from a in associatedProducts.Products 
           select a.Products) 
           .Contains(p.Key) 
         select p; 

Non ho verificato la query, ma dovrebbe apparire come questa.

Si dovrebbe avere uno sguardo a come è possibile utilizzare "non in" in LINQ:
How would you do a "not in" query with LINQ?

Problemi correlati