LINQ - 获取某个属性位于属性类型的另一个结果集中的结果

时间:2012-03-01 03:16:11

标签: c# .net linq entity-framework

我想找到BuildingPrice } BuildingPrice.ShedStyle属性中ShedStyles.Where(...)属性的每个var prices = db.BuildingPrices.Where( p => p.ShedStyle.IsAmong( //There must be some obvious method for this db.ShedStyles.Where(s => s.Name.Contains("text") ); public class BuildingPrice { public ShedStyle ShedStyle { get; set; } } public class ShedStyle { public string Name { get; set; } } public class Context : DbContext { public DbSet<BuildingPrice> BuildingPrices { get; set; } public DbSet<ShedStyle> ShedStyles { get; set; } }

{{1}}

3 个答案:

答案 0 :(得分:3)

可以<{1}}或Any()执行此操作:

Contains()

但鉴于您的疑问,为什么不能直接测试条件?

var prices = db.BuildingPrices.Where(
 p => db.ShedStyle.Where(s => s.Name.Contains("text")).Any(x=> x.Name == p.ShedStyle.Name));

后一种方法似乎更为直接。

答案 1 :(得分:1)

var prices = db.BuildingPrices.Where(
p => db.ShedStyles.Where(s => s.Name.Contains("text")).Contains(p.ShedStyle));

答案 2 :(得分:1)

有点晚了,我的大脑还不够满足​​,因为我相信这可以通过加入完成,但没有它,这就是我想出来的。你只是有点倒退了。

        var prices = db.BuildingPrices.Where
            (
                p => db.ShedStyles
                    .Where( s => s.Name.Contains("text"))
                    .Contains(p.ShedStyle)

            );