比较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);

我如何从每个子公司的所有目录中获取给定环境的所有供应商材料?

比较linq查询中的Enumerable与Enumerable

可枚举对象。SelectMany方法允许您平面化数据。要得到所有的供应商材料,你只需要平两次。您的代码可能看起来像这样:

var supplierMaterials = user.Environments.First().Subsidiarys
                         .SelectMany(x => 
                           x.Catalogs.SelectMany(y => 
                               y.SupplierMaterials));