2016-07-25 7 views
1

リストを返す方法のLINQとラムダと/どこに参加以下のクエリは、私は、ラムダを使用して、それを書き換えた場合、それは二つのリストを返しC#が<T>

List<purchaseOrderHeaderEntity> details = (from p in 
db.purchaseOrderDetailEntity join r in db.purchaseOrderHeaderEntity on 
p.purchaseOrderID equals 
r.purchaseOrderID 
where p.productID == productID select r).ToList(); 

期待どおりにうまく動作し、1 List<>を返します。

私は削除する場合
List<purchaseOrderHeaderEntity> lambda_details = db.purchaseOrderDetailEntity.Join(db.purchaseOrderHeaderEntity, 
        p => p.purchaseOrderID, 
        r => r.purchaseOrderID, 
        (p, r) => new { Detail = p, Header = r }).Where(DetailAndHeader => DetailAndHeader.Detail.productID == productID).ToList(); 

は "Detail=pは、" 選択部分から、参加は、エラーがスローされます

"メソッドの型引数は、その使用法から推論できません。 明示的に型引数を指定してみてください。」

を、それがヘッダーのために一つだけのリストを返す作るために、そのクエリを書き換える方法はありますか?たくさん事前に

ありがとう!

+0

ありがとう、haim770!書式設定が行われる限り、それはもっと良く見えます! – alex

+0

みなさんありがとう!それはまさに私が必要なものです! – alex

答えて

3

をあなたは置くことができます条件が前に参加する場合は、その後、あなたはRを返すことができます。

var lambda_details = db.purchaseOrderDetailEntity 
      .Where(detailAndHeader => detailAndHeader.Detail.productID == productID) 
      .Join(db.purchaseOrderHeaderEntity, 
         p => p.purchaseOrderID, 
         r => r.purchaseOrderID, 
         (p, r) => r).ToList(); 
2

あなたのクエリ理解とご堪能クエリが異なるクエリです。

あなたのクエリの理解式は次のとおりです。

from p in db.purchaseOrderDetailEntity 
join r in db.purchaseOrderHeaderEntity on 
p.purchaseOrderID equals r.purchaseOrderID 
where p.productID == productID 
select r 

あなたの流暢な形式は次のとおりです。

db.purchaseOrderDetailEntity. 
    Join(
    db.purchaseOrderHeaderEntity, 
    p => p.purchaseOrderID, 
    r => r.purchaseOrderID, 
    (p, r) => new { p, r }). 
    Where(pr => pr.p.productID == productID) 

しかし、正しい流暢なフォームは

db.purchaseOrderDetailEntity. 
    Join(
    db.purchaseOrderHeaderEntity, 
    p => p.purchaseOrderID, 
    r => r.purchaseOrderID, 
    (p, r) => new { p, r }). 
    Where(pr => pr.p.productID == productID). 
    Select(pr => pr.r) 

であることは、あなたの質問に答えるのか?そうでない場合は、コンパイルして実行できる小さなプログラムを与えてください。は明らかにで問題を再現します。

+0

@Servy:タイプミスをよく捉えてくれてありがとう! –

関連する問題