C# (LINQ-to-SQL) または SQL で、構造が一致する 2 つのテーブルを取得し、TableB にある TableA の行数をカウントするジェネリック関数を作成するにはどうすればよいですか?
TableA Structure
Value1, Value2
TableA Data
1,1
TableB Structure
Value1, Value2
TableB Data
1,1,
1,2
TableA と TableB の間で一致する行の数を取得するには:
SELECT COUNT(*) FROM TableA
INNER JOIN TableB ON
TableA.Value1 = TableB.Value1 AND
TableA.Value2 = TableB.Value2
この例の結果
1
したがって、上記のクエリはうまく機能しますが、INNER JOIN がすべてのフィールドにあるため、これを実行したいテーブルのペアごとにバージョンを記述する必要はありません。すべての結合条件を手動で入力する代わりに、これを行うためのより一般的な方法が必要だと思います。考え?
編集:実際には、これはサーバー間で行われるため、C#/LINQ の回答が必要になると思います。繰り返しますが、各フィールドを手動で比較するコードを書かなければならないので、これは面倒です。
var tableARows = dbA.TableA.ToList();
var tableBRows = dbB.TableB.ToList();
var match = 0;
foreach(tableARow in tableARows){
if(tableBRows.Where(a=>a.Value1 = tableARow.Value1 && a.Value2 = tableARow.Value2).Any()){
match++;
}
}
return match;