0

質問を書き直しました。正しい方法で公開しませんでした。ごめんなさい。

私はこのSQLクエリを持っています:

SELECT T1.*, T2.documentNumber
FROM TABLE1 T1      
LEFT JOIN TABLE2 T2 ON      
    T2.documentNumber = (
        SELECT TOP 1 documentNumber         
        FROM TABLE2  
        WHERE description = T1.description)                                     
WHERE T1.color = 'RED';

T1対応する値を使用して色でフィルタリングされたすべての行を取得する必要がありますT2.documentNumberが、一意のT1行、つまり、との1対1の関係T2です。

T1T2は列を介して関連付けられてdescriptionいます。descriptionで一意ではないためt2、このテーブルには同じ説明のN行を含めることができます。各行の結果として1行だけが必要なのでT1、一意の列(documentNumber)でフィルタリングされた上位1つを取得します。

このクエリは私にとっては問題なく機能します。Linq-to-SQLと同等であることを知っておく必要があります。数時間試しましたが、成功しませんでした。誰か助けてくれませんか?

4

1 に答える 1

2

試す

var result = table1.Where(t1 => t1.color == "RED")
                   .GroupJoin(table2,
                              t1 => t1.description,
                              t2 => t2.description,
                              (t1,g) => new {
                                              T1 = t1,
                                              DocumentNumber = g.FirstOrDefault()
                                             });

必須の101リンク:http ://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811bは、この種のクエリの処理に役立つはずです。

于 2012-11-13T16:07:38.157 に答える