2017-02-17 21 views
-2

私はSQLで行う方法を知っていますが、LINQクエリを理解する方法はわかっています。ここにSQLがあります。複数の列を持つ複数の列によるLinqクエリグループ

SELECT ordNo, tranNo, COUNT(distinct custNo) 
FROM orders 
GROUP BY ordNo, tranNo 
HAVING COUNT(distinct custNo) > 1 

私はあなたが重複としてマークしたのと同じ質問ではないと思います。リンクされた質問は、単一のプロパティでのみグループ化されます。私は試したLinqのクエリのトラックを失ったが、ここに1つです。

var countList = from o in orders 
      group o by new {o.orderNo, o.tranNo, o.custNo} 
      into grp 
      where grp.Key.custNo.Distinct().Count() > 1 
      select grp; 

私は以下の提案を試みましたが、誰かがcustNoプロパティにアクセスできないとコメントしたようです。

+5

linqも共有してください。あなたが試して調査したことを示してください。私たちはそこから手伝ってもらえますが、あなたのために書くことはできません。 –

+0

あなたのLINQクエリではすべてのように思えます。エラーメッセージがありますか? –

+0

Linq to SQLまたはEntity Frameworkを使用していますか? – user1859022

答えて

0

私はテーブルの構造を知らないので、ちょうどspitballing。

context.orders 
    .GroupBy(o => new { o.ordNo, o.tranNo, o.custNo }) 
    .Where(o => o.custNo.Distinct().Count() > 1) 
    .Select(o => new { 
     ordNo = o.ordNo, 
     tranNo = o.tranNo 
    }); 
+0

グルーピングの結果の後で、このようにcustNoプロパティにアクセスすることができないのではないかと思う。 –

+0

ああ、良い点。とにかく質問が間違っているように見える... –

関連する問題