linq

2010-06-20 22 views
13

ile bir koleksiyonun alt koleksiyonunu sorgulama Ürün koleksiyonum var ve her ürün nesnesinin kendi ProductImages koleksiyonu var. Her ProductImage nesnesinin bir IsMainImage bool alanı vardır.linq

select products.productimages.imagename where products.productid == 1 and  
product.productimages.ismainimage == true 

kimse, beni bu anlamaya yardımcı Bunu, ya da her ikisi gibi linq sorguları yazma hakkında bilgi alabilirsiniz bir online kaynağa işaret edebilir: Ben zor bir zaman böyle bir Linq sorgusu inşa yaşıyorum?

Yardımlarınız için teşekkür ederiz!

from product in products 
where product.productid == 1 
from image in product.productimages 
where image.ismainimage 
select image.imagename 

gibi

cevap

11

deneyin bir şey de sizin için iyi bilgiler içerebilir 101 linq queries bu listeyi buldum.

+1

Genelde bu sayfaya bakıyorum - bunun altında bulabildiğim örnek adı nedir? çok teşekkürler, izin verildiğinde kabul edeceğim :) – TheGeekYouNeed

3

sorguyu yazmak için başka bir yolu da ürünün 1 ana görüntüdür ilk resmi seçmektir:

var q = from p in products 
     where p.ProductID == 1 
     select p.ProductImages.First(img => img.IsMainImage); 

Ben bu genellikle birleştirmeler için kullanılan iç içe from bentlerinde (daha okunabilir olduğunu düşünürdüm ve benzer yapılar). First kullanmak da daha verimli olabilir, ancak bu sadece bir tahmin (ve büyük olasılıkla önemli değil)

5

Ayrıca, .SelectMany() projeksiyon yöntemini de kullanabilirsiniz.

 products.Where(product => product.productid == 1) 
       .SelectMany(product => 
             product.productimages.Where(image => image.ismainimage) 
                  .Select(image => image.imagename) 
          );