0

私は次の設定をしています:

ShoeAreasShoeIdと を含むテーブルMaterialIdShoesIDと を含むテーブルStatus

私は引数を 1 つ取るメソッドを持っています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これは私が作成した2番目のLinq to Entityクエリであるため、構文の問題なのか、クエリ自体が間違っているのか疑問があります。

4

3 に答える 3

1

メソッド ( condition の値)IEnumerable<bool>から戻っています。代わりに、結合された両方のエンティティを保持する匿名型を作成します。Joinsa.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
 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 に答える
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 に答える