[英]Inner Join a C# datatable and Sql Datatable using linq
我知道这显然是一个重复的问题,但是由于我是LINQ的新手,所以我无法弄清楚这个问题。
基本上,我必须对对数据的重复输入进行匹配,同时一次添加多个记录。 因此,我在数据库中有一个表,该表只有几行,然后动态创建DataTable
,该表是该表的克隆(就结构而言)。 现在, dtDup
是数据库表,从选择查询中作为数据集/数据表返回,并且dupVals
是要进行重复检查以进行重复检查的动态克隆。
var CommnRows =
from dbA in dtDup.AsEnumerable()
join appB in dupVals.AsEnumerable() on
new {
MonthID = dbA.Field<int>("MonthID"),
UserID = dbA.Field<int?>("UserID"), //nullable int
IsActive = dbA.Field<bool?>("IsActive"), //nullable bit
Gender = dbA.Field<String>("Gender").ToString().ToUpper()
}
equals
new {
MonthID = appB.Field<int>("MonthID"),
UserID = appB.Field<int?>("UserID"),
IsActive = appB.Field<bool?>("IsActive")
Gender = appB.Field<String>("Gender").ToString().ToUpper()
}
select dbA;
因此,如果我返回了一些行(假设以上联接是正确的内部联接),则意味着存在重复的行。
但我收到一个错误:
你调用的对象是空的
在new
后equals
我发现了问题。 我正在尝试更改属于字符串的一列的类型,起初我没有将其包括在问题中(现在已更新),但是当我尝试逐行调试它时,我发现它在Gender
附近时正在断开。 因此,只需从该区域删除ToString().ToUpper()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.