如何通过子属性选择对象

时间:2013-12-06 10:28:23

标签: c# visual-studio-2010 object join

我有一个对象列表,让我们称之为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);

3 个答案:

答案 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而不必进行自我加入。