我知道这显然是一个反复提出的问题,但我无法弄清楚这个问题,因为我是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
答案 0 :(得分:0)
我发现了这个问题。我试图改变我的一个字符串的字体类型,起初我没有包含在问题中(现在更新),但是当我尝试逐行调试时,我发现它在临近{ {1}}。所以,刚刚从该区域删除Gender
并且它有效。