LINQ-获取某个属性在该属性的另一个结果集中的结果';s类型
本文关键字:结果 属性 类型 集中 获取 LINQ- 另一个 | 更新日期: 2023-09-27 18:26:08
我想在ShedStyles.Where(...)
的结果中找到BuildingPrice.ShedStyle
属性所在的每个BuildingPrice
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; }
}
您可以使用Any()
或Contains()
:
var prices = db.BuildingPrices.Where(
p => db.ShedStyle.Where(s => s.Name.Contains("text")).Any(x=> x.Name == p.ShedStyle.Name));
但考虑到你的疑问,你为什么不能直接测试条件?
var prices = db.BuildingPrices.Where(p=> p.ShedStyle.Name.Contains("text"));
后一种方法似乎要简单得多。
现在有点晚了,我的大脑还没有满负荷,因为我相信使用Join可以做到这一点,但如果没有Join,以下是我的想法。你只是有点倒退了。
var prices = db.BuildingPrices.Where
(
p => db.ShedStyles
.Where( s => s.Name.Contains("text"))
.Contains(p.ShedStyle)
);
var prices = db.BuildingPrices.Where(
p => db.ShedStyles.Where(s => s.Name.Contains("text")).Contains(p.ShedStyle));