繁体   English   中英

使用linq内部连接C#数据表和Sql数据表

[英]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;

因此,如果我返回了一些行(假设以上联接是正确的内部联接),则意味着存在重复的行。

但我收到一个错误:

你调用的对象是空的

newequals

我发现了问题。 我正在尝试更改属于字符串的一列的类型,起初我没有将其包括在问题中(现在已更新),但是当我尝试逐行调试它时,我发现它在Gender附近时正在断开。 因此,只需从该区域删除ToString().ToUpper()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM