我想找到BuildingPrice
1>} 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}}
答案 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)
);