C# 如何将两个数据表的值与容差进行比较



我正在开发一个在两个数据表中读取的工具。 这些数据表具有相同的 ID(外键(但值不同。
例如:
表1

ID Length Height
1    2.5    2.4
2    3.4    1.9
3    1.1    2.2

表2

ID Length Height
1    2.5    2.0
2    3.2    1.7
3    1.0    2.2

如何将这些表与公差进行比较?因此,它可以识别两个数据表中ID相同的位置,例如长度差异0.1,高度差异0.2可以吗?

完美的解决方案是一张看起来像

ID Length Height
1    ok        ok
2    not ok    ok
3    not ok    not ok

有什么办法可以做到这一点吗? 致谢问候

这里可以使用何时比较两列

前任:

select case when (2=2) then 'ok' else 'not ok' end

您可以使用如下所示的 case 语句

select t1.ID
CASE WHEN ABS(t1.LENGTH-t2.LENGTH)<0.1 then 'ok' else 'not ok 'end,
CASE WHEN ABS(t1.HEIGHT-t2.HEIGHT)<0.2 then 'ok' else 'not ok 'end
from TABLE1 t1 join Table2 t2 on t1.ID = t2.ID
select tbl1.Id,
CASE when ABS(tbl1.Length-tbl2.Length)<=0.1 then 'OK' else 'Not OK' END,
CASE when ABS(tbl1.Height-tbl2.Height)<=0.2 then 'OK' else 'Not OK' END 
from table1 tbl1 inner join table2 tbl2 on tbl1.Id=tbl2.Id

如果要比较两个数据表,请使用 LinQ

Datatable dtNew = (from dt1 in datatble1.AsEnumerable()
join dt2 in datatable2.AsEnumerable()
on dt1[id].ToString() = dt2[id].ToString()
.where()
.Select()
).CopyToDatatable()

在条件相应的情况下应用。 或者你可以参考 (https://forgetcode.com/csharp/1508-comparing-two-datatables-and-returning-a-datatable-by-matching-one-or-more-columns-using-linq(

相关内容

  • 没有找到相关文章

最新更新