2010-04-21 17 views
7

Se ho il seguente modello;LINQ nidificato Dove

public List<RecommendedProduct> recommendations 

Poi

public class RecommendedProduct 
    public List<Product> Products 

allora il prodotto;

public class Product 
    public string Code 

Le raccomandazioni lista ha, ad esempio, 10 articoli in esso.

Ogni raccomandazioni articolo contiene due prodotti.

In che modo, con LINQ, è possibile trovare l'oggetto contenente prodotti con codici prodotto "A" e "B"?

risposta

11

Utilizzare il Any estensione:

var myProducts = 
    from rp in recommendations 
    where 
     cp.Products.Any(p => p.Product.Code == "A") && 
     cp.Products.Any(p => p.Product.Code == "B") 
    select rp; 

Any rendimenti true se sono presenti elementi nella sequenza che soddisfano la condizione interna. In questo caso stai cercando due elementi, quindi occorrono due chiamate Any.

+0

+1 brillante! Grazie @Aaronaught. – griegs