[英]LINQ to Entity join query
我有以下设置:
表ShoeAreas
有列ShoeId
和MaterialId
。 带有ID
和Status
列的桌Shoes
。
我有一个带一个参数的方法- materialId
和目标是确定是否有在记录ShoeAreas
与MaterialId
等于一个像传递的参数。 并且是否存在这样的记录(或最有可能的记录)是否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.