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

正确的DataTable图像是这样的:

下面是我试图使用的代码,但没有返回任何内容,而且它应该
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")
};谁能告诉我为什么会发生这种情况,或者我写的查询是错误的,请你们帮助我。
发布于 2013-06-19 20:28:58
根据您的样本数据,您在这里没有任何匹配(零与空值不匹配)。如果根据您的应用程序的逻辑这是可以的,那么您可以将字段的值转换为int而不是Nullable<int>。在这种情况下,将为DbNull单元格提供默认值(零):
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")
} https://stackoverflow.com/questions/17190256
复制相似问题