繁体   English   中英

LINQ到实体联接查询

[英]LINQ to Entity join query

我有以下设置:

ShoeAreas有列ShoeIdMaterialId 带有IDStatus列的桌Shoes

我有一个带一个参数的方法- materialId和目标是确定是否有在记录ShoeAreasMaterialId等于一个像传递的参数。 并且是否存在这样的记录(或最有可能的记录)是否Shoes with状态为=生产中的鞋子”中的Shoes with

我尝试了这个:

 return shoeService.All().
                Join(shoeAreaService.All(),
                s => s.ID,
                sa => sa.ShoeId,
                (s, sa) => (sa.MaterialId == matId)).
                Any(s => (s.Status == (byte)EntityStatusProd.Production)));

但是我在Any..行上说} expected错误,这也是我编写的第二个Linq to Entity查询,因此我怀疑这是语法问题还是查询本身是错误的。

您正在从Join方法中返回IEnumerable<bool> (条件值sa.MaterialId == matId )。 创建匿名类型,该类型将保留两个已加入的实体:

 return shoeService.All()
           .Join(shoeAreaService.All(),
                 s => s.ID,
                 sa => sa.ShoeId,
                 (s, sa) => new { s, sa }) // here
           .Any(x => (x.sa.MaterialId == matId) && 
                     (x.s.Status == (byte)EntityStatusProd.Production)));

您可以尝试以下操作:(linq)

from shoe in Shoes 
join shoeArea in ShoesArea on shoe.ID equals shoeArea.ShoeID
where shoeArea.MeterialID == matID && shoe.Status == (byte)EntityStatusProd.Production
select new {shoe.ID,shoe.Status};
 return shoeService.All().Any(s => shoeAreaService.All()
                                .Any(sa => sa.MaterialId == matId 
                                        && s.Id == sa.ShoeId)
                          && s.Status == (byte)EntityStatusProd.Production);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM