POHeader と PODetail の 2 つのテーブルがあります。関連する PODetail.ItemId = intItemId を持つすべての POHeaders を返したいと考えています。LINQでこれを行うにはどうすればよいですか?
これは私が試したものです。
最初に、Include パラメーターを使用して PODetails を含めるメソッドをリポジトリに作成します。
public IQueryable<POHeader> SearchForWithDetails(int intFacilityId)
{
return DbSet.Include("PODetails").Where(x => x.FacilityId == intFacilityId);
}
次に、その結果が次のように渡されます。
public IQueryable<POHeader> SearchForPODetailsByItemId(IQueryable<POHeader> poHeaders, int intItemId)
{
//This returns a type of PODetail not POHeader
var q = poHeaders.SelectMany(c => c.PODetails).Where(c => c.ItemId == intItemId);
//In this case, I can't figure out the syntax :(
var p = from poHeader in poHeaders
let filteredPOs = from poDetail in poHeader.PODetails
where poDetail.ItemId == intItemId
select ????
return p;
}
これを行う正しい方法は何ですか?
また、次の 2 つの結果が必要になると予測できます。
- IQueryable を返すだけです
- 結合されたテーブルの結果を返します。