Inner使用linq加入C#datatable和Sql Datatable

时间:2014-03-04 07:11:26

标签: c# sql linq datatable

我知道这显然是一个反复提出的问题,但我无法弄清楚这个问题,因为我是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

1 个答案:

答案 0 :(得分:0)

我发现了这个问题。我试图改变我的一个字符串的字体类型,起初我没有包含在问题中(现在更新),但是当我尝试逐行调试时,我发现它在临近{ {1}}。所以,刚刚从该区域删除Gender并且它有效。