0

我有以下设置:

ShoeAreas具有列ShoeId和的表MaterialIdShoes具有列ID和的表Status

我有一个接受一个参数的方法 -materialId目标是确定是否有一个记录ShoeAreas等于MaterialId传递的一个参数。如果存在这样的记录(或最有可能的记录),如果它们与来自Shoes withStatus` = Production 的鞋子相关。

我试过这个:

 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 查询,所以我怀疑它是语法问题还是查询本身是错误的。

4

3 回答 3

1

您正在IEnumerable<bool>Join方法返回(条件值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)));
于 2013-04-10T07:04:41.043 回答
1

你可以试试这个:(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};
于 2013-04-10T07:06:15.777 回答
1
 return shoeService.All().Any(s => shoeAreaService.All()
                                .Any(sa => sa.MaterialId == matId 
                                        && s.Id == sa.ShoeId)
                          && s.Status == (byte)EntityStatusProd.Production);
于 2013-04-10T07:09:21.080 回答