比较linq查询中的Enumerable与Enumerable
本文关键字:Enumerable linq 查询 比较 | 更新日期: 2023-09-27 18:17:58
我想使用LINQ比较列表并返回公共对象。
我有目录模型,其中包含供应商资料的集合
public partial class Catalogs{
public int IdCatalog { get; set; }
public virtual ICollection<SupplierMaterials> SupplierMaterials { get; set; }
}
然后我有包含目录集合的子模型
public partial class Subsidiary{
public int IdSubsidiary { get; set; }
public virtual ICollection<Catalogs> Catalogs { get; set; }
}
然后是SupplierMaterials Model
public partial class SupplierMaterials{
public int IdCatalog { get; set; }
public int IdSupplierMaterials{ get; set; }
}
我有一个拥有环境的用户。一个环境有很多子公司,我想做一个linq查询与所有供应商的材料都在上面用户的子公司。我有这个linq查询,但我不知道如何使where子句
var subsidiary = user.Environment.First().Subsidiary;
query = (from x in db.SupplierMaterials
join y in db.Catalogs on x.IdCatalog equals y.IdCatalog
where y.Subsidiary.Any(subsidiary => y.Subsidiary)
select x);
我如何从每个子公司的所有目录中获取给定环境的所有供应商材料?
可枚举对象。SelectMany方法允许您平面化数据。要得到所有的供应商材料,你只需要平两次。您的代码可能看起来像这样:
var supplierMaterials = user.Environments.First().Subsidiarys
.SelectMany(x =>
x.Catalogs.SelectMany(y =>
y.SupplierMaterials));