Asp.net mvc 3 只需要两个数据表中不同的列值
我有两个Asp.net mvc 3 只需要两个数据表中不同的列值,asp.net-mvc-3,sql-server-2008,c#-4.0,datatable,ado.net,Asp.net Mvc 3,Sql Server 2008,C# 4.0,Datatable,Ado.net,我有两个数据表,其中我只需要在最终的数据表中使用不同的列值,如下所示 数据表(DT1) 数据表(DT2) 数据表(DT3) 如何使用数据表上的linq查询或任何其他方式来实现这一点?我尝试循环并比较两个数据表中的每一列值,但不知道如何存储在最终的数据表中 首先,我们需要连接这些表(假设ID具有PK/FK关系),然后比较这些值并将它们放在一个新表中 var unMatchedRows = from DataRow dt1Row in dt1.Rows
数据表
,其中我只需要在最终的数据表
中使用不同的列值,如下所示
数据表(DT1)
数据表(DT2)
数据表(DT3)
如何使用数据表上的linq查询或任何其他方式来实现这一点?我尝试循环并比较两个数据表中的每一列值,但不知道如何存储在最终的数据表中 首先,我们需要连接这些表(假设ID具有PK/FK关系),然后比较这些值并将它们放在一个新表中
var unMatchedRows = from DataRow dt1Row in dt1.Rows
join DataRow dt2Row in dt2.Rows
on dt1Row["id"] equals dt2Row["id"]
where Convert.ToDoubl(dt1Row["salary"]) != Convert.ToDouble(dt2Row["salary"])
select new { dt1Row, dt2Row };
这为我们提供了一个数据行对象的集合,这些对象在工资不同的ID上连接。现在我们只需要用这些行填充一个新的DataTable
foreach (var m in unMatchedrows)
{
dt3.ImportRow(m);
}
值得注意的是,DT3需要与其他两个表具有相同的模式。这将只在新表中放置不匹配的行。有几种方法可以做到这一点,我现在不在IDE前测试它,但这应该会让你开始。希望这有帮助
ID Salary(DT1) Salary(DT2)
1 2000 3000
2 4000 5000
var unMatchedRows = from DataRow dt1Row in dt1.Rows
join DataRow dt2Row in dt2.Rows
on dt1Row["id"] equals dt2Row["id"]
where Convert.ToDoubl(dt1Row["salary"]) != Convert.ToDouble(dt2Row["salary"])
select new { dt1Row, dt2Row };
foreach (var m in unMatchedrows)
{
dt3.ImportRow(m);
}