首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用多列将linq连接到Dataset查询

使用多列将linq连接到Dataset查询
EN

Stack Overflow用户
提问于 2013-06-19 19:40:33
回答 1查看 541关注 0票数 0

嗨,我正在尝试连接2个DataTables,左边的一个包含3个不同的列作为主键,另一个包含相同的列作为外键,这里是左边的数据表图像:

正确的DataTable图像是这样的:

下面是我试图使用的代码,但没有返回任何内容,而且它应该

代码语言:javascript
复制
var query5 =
        from ChanToNGrsToNgrDAnWal in chanToNGrsToNgrDAnWal.AsEnumerable()
        join Node in node.AsEnumerable() 
            on new { 
                 A = ChanToNGrsToNgrDAnWal.Field<int?>("diffusers_Id"), 
                 B = ChanToNGrsToNgrDAnWal.Field<int?>("analogs_Id"), 
                 C = ChanToNGrsToNgrDAnWal.Field<int?>("wallstats_Id") }
            equals new { 
                 A = Node.Field<int?>("diffusers_Id"), 
                 B = Node.Field<int?>("analogs_Id"), 
                 C = Node.Field<int?>("wallstats_Id") 
            }                  
        select new
        {
            channel_Id = ChanToNGrsToNgrDAnWal.Field<int?>("channel_Id"),
            number = ChanToNGrsToNgrDAnWal.Field<string>("number"),
            nodeGroups_Id = ChanToNGrsToNgrDAnWal.Field<int>("nodeGroups_Id"),
            analogNodeSerial = ChanToNGrsToNgrDAnWal.Field<string>("analogNodeSerial"),
            diffuserNodeSerial = ChanToNGrsToNgrDAnWal.Field<string>("diffuserNodeSerial"),
            wallStatNodeSerial = ChanToNGrsToNgrDAnWal.Field<string>("wallStatNodeSerial"),
            diffusers_Id = ChanToNGrsToNgrDAnWal.Field<int?>("diffusers_Id"),
            analogs_Id = ChanToNGrsToNgrDAnWal.Field<int?>("analogs_Id"),
            wallstats_Id = ChanToNGrsToNgrDAnWal.Field<int?>("wallstats_Id"),
            typeCode = Node.Field<string>("typeCode"),
            node_Id = Node.Field<int?>("node_Id")

        };

谁能告诉我为什么会发生这种情况,或者我写的查询是错误的,请你们帮助我。

EN

回答 1

Stack Overflow用户

发布于 2013-06-19 20:28:58

根据您的样本数据,您在这里没有任何匹配(零与空值不匹配)。如果根据您的应用程序的逻辑这是可以的,那么您可以将字段的值转换为int而不是Nullable<int>。在这种情况下,将为DbNull单元格提供默认值(零):

代码语言:javascript
复制
    on new { 
         A = ChanToNGrsToNgrDAnWal.Field<int>("diffusers_Id"), 
         B = ChanToNGrsToNgrDAnWal.Field<int>("analogs_Id"), 
         C = ChanToNGrsToNgrDAnWal.Field<int>("wallstats_Id") 
    }
    equals new { 
         A = Node.Field<int>("diffusers_Id"), 
         B = Node.Field<int>("analogs_Id"), 
         C = Node.Field<int>("wallstats_Id") 
    }   
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17190256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档