C#数据库工具开发(六)

问题(07/17)

1. 两个list的互相比较

背景:我要比较两个DataGridView中多列值,可转变为两列list的互相比较

我的简单实现:

用多次foreach循环,设置一个标签find=false;找到改为ture;实现查找两个lists中有哪些不同项。

这样做能在循环中找到不同项和差项时,直接进行操作。可能存在问题是对于大量数据效率低,好在我这里只要比较数据库某个表中的字段名称,类型和长度。

其他实现:

C# Linq获取两个List或数组的差集交集

这样做的话,要先把DataGridView中的列存入list,linq取到差集后,再在DataGridView中定位差集中的元素,再进行操作。好处是linq在普通方法实现list比较时,效率高,对大量数据也适用。

考虑之后学习linq,尝试实现。

2. CHARACTER_MAXIMUM_LENGTH返回值为空

string length = (reader.IsDBNull(2)) ? "": Convert.ToString(reader.GetInt32(2));

sqlserver数据库中,CHARACTER_MAXIMUM_LENGTH查询结果为空,但是返回值不能用reader.GetInt32(2)==null来判断。原因是数据库中的null和字符串中的null是不同类型的值,所以要用IsDBNULL来判断。