如何在 C# (LINQ-to-SQL) 或 SQL 中创建一个通用函数,该函数采用两个具有匹配结构的表并计算 TableA 中有多少行在 TableB 中。
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;