2010-06-20 224 views
13

我有一個產品集合,每個產品對象都有它自己的ProductImages集合。每個ProductImage對象都有一個IsMainImage bool字段。我有一個困難時期構建LINQ查詢是這樣的:用linq查詢集合的子集合

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

誰能幫我想出解決辦法,指向我的網上資源在那裏我可以學到如何編寫LINQ查詢這樣的,或兩者兼而有之?

謝謝你的幫助!

回答

11

嘗試像

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

我也發現了101 linq queries該名單中可能包含有用信息給你。

+1

我通常會看看那個頁面 - 在那裏我可以找到這個例子的例子的名稱是什麼?非常感謝,當我被允許時會接受:) – TheGeekYouNeed 2010-06-20 01:07:00

3

另一種方式編寫查詢是選擇爲產品1中的主圖像的第一圖像:

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

我認爲這是比嵌套from條款(其通常用於連接更具有可讀性和類似的結構)。使用First可能也更有效率,但這只是一個猜測(而且很可能並不重要)

5

也可以使用.SelectMany()投影方法。

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