有没有快速的比较两条记录

aab_123456789 2020-06-05 11:07:57
有没有快速的比较两条记录,相同字段的值的差异,比如a,b,c和a1,b2,c2的两条记录,哪个字段值变化了。
...全文
176 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 2020-06-09
  • 打赏
  • 举报
回复
循环比较不就好了。。。
墨子宸 2020-06-09
  • 打赏
  • 举报
回复
使用Linq
by_封爱 版主 2020-06-09
  • 打赏
  • 举报
回复
如果是c#里的class对象.,, 直接反射得到所有的值 然后跟另外一个求差集...
  • 打赏
  • 举报
回复
你可以使用 DbDataReader 类型的对象将“记录”分别读取到2个IDataRecord 对象中。遍历对象可以使用类似这样的代码
for (var i = 0; i < rd.FieldCount; i++)
{
var value = rd.GetValue(i);
if (value != DBNull.Value)
{
var name = rd.GetName(i);
var value = rd.GetValue(i);
................................
}
}
你懂的11 2020-06-08
  • 打赏
  • 举报
回复
吉普赛的歌 2020-06-06
  • 打赏
  • 举报
回复
如果要快速对比两个不同表的相应记录是否一致, 建议用sql里面的 checksum
吉普赛的歌 2020-06-06
  • 打赏
  • 举报
回复
USE tempdb
GO
IF OBJECT_ID('t') IS NOT NULL
DROP TABLE t
GO
CREATE TABLE t(
	id INT IDENTITY(1,1) PRIMARY KEY,
	a INT,
	b INT,
	c INT	
)
GO
SET NOCOUNT OFF
INSERT INTO t(a,b,c) VALUES (1,2,3);
INSERT INTO t(a,b,c) VALUES (1,4,5);

SELECT * FROM t
/*
id	a	b	c
1	1	2	3
2	1	4	5
*/
--------- 以上为测试表及测试数据 --------

SELECT 
	CASE WHEN aa.a!=bb.a THEN 'a 字段不相同: '+LTRIM(aa.a)+'=>'+LTRIM(bb.a)+';' ELSE '' END
	+
	CASE WHEN aa.b!=bb.b THEN 'b 字段不相同: '+LTRIM(aa.b)+'=>'+LTRIM(bb.b)+';' ELSE '' END
	+
	CASE WHEN aa.c!=bb.c THEN 'c 字段不相同: '+LTRIM(aa.c)+'=>'+LTRIM(bb.c)+';' ELSE '' END
FROM (
	SELECT * FROM t AS a WHERE id=1
) AS aa
FULL JOIN 
(
	SELECT * FROM t AS a WHERE id=2
) AS bb
ON 1=1
/*
b 字段不相同: 2=>4;c 字段不相同: 3=>5;
*/
	
健者天行 2020-06-06
  • 打赏
  • 举报
回复
foreach 循环

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧