2010-06-20 123 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) 
          );