我有一系列产品,每个产品对象都有自己的ProductImages集合。每个ProductImage对象都有一个IsMainImage bool字段。我很难建立像这样的Linq查询:
select products.productimages.imagename where products.productid == 1 and
product.productimages.ismainimage == true
任何人都可以帮我解决这个问题,请指点我在线资源,我可以学习如何编写这样的linq查询,或两者兼而有之?
感谢您的帮助!
答案 0 :(得分:12)
尝试类似
的内容from product in products
where product.productid == 1
from image in product.productimages
where image.ismainimage
select image.imagename
我还找到了101 linq queries的这个列表,其中可能包含了很好的信息。
答案 1 :(得分:5)
您也可以使用.SelectMany()投影方法。
products.Where(product => product.productid == 1)
.SelectMany(product =>
product.productimages.Where(image => image.ismainimage)
.Select(image => image.imagename)
);
答案 2 :(得分:3)
编写查询的另一种方法是选择第一个图像作为产品1的主图像:
var q = from p in products
where p.ProductID == 1
select p.ProductImages.First(img => img.IsMainImage);
我认为这比嵌套的from
子句(通常用于连接和类似的构造)更具可读性。使用First
也可能更有效,但这只是猜测(而且很可能无关紧要)