我有一个对象列表,让我们称之为Product,它们每个都包含一堆属性,还有一个版本列表(也是对象)。 版本还有一堆属性,并且包含一个Customer列表(也是对象)。 客户再次拥有属性,其中一个是其ID(= Guid)。
我尝试做的是制作一个产品列表,由其Product.VersionList.Version.ID的某个ID选择。
我会优先考虑一个连接查询,但欢迎所有有效的方法。我到目前为止尝试了这个,但由于我只有一个ID可供比较,我不知道如何构建连接。
lp = List<Entity.Product>;
g = GetGuid();
var query = from product in Entity.ProductCollection
join g in g
on product.Version.Where(x => x.id == g)
select product;
lp.AddRange(query);
答案 0 :(得分:2)
我猜你的意思是:
var query = from product in Entity.ProductCollection
where product.Version.Any(x => x.id == g)
select product;
即。选择所有具有id与您正在考虑的guid匹配的版本的产品。
请注意,如果任何产品具有多个匹配版本,则加入版本会导致产品重复。
答案 1 :(得分:1)
试试这个....可能你想要更深入地挖掘它......
var query = from Product product in pc
from varsion in product.Version
let v= varsion as Entity.Version
where v.id == g
select product;
答案 2 :(得分:0)
var query = Entity.ProductCollection.Where(p => p.Version.Any(v => v.Id == g));
您可以使用Any而不必进行自我加入。