我正在编写数据库测试实用程序代码,它将 DataRow 值与作为字典提供的预期值(columnName,expectedColumnValue)进行比较。
它适用于许多类型,但对于字节和短,我必须添加将值转换为 Int32 的转换代码。
两个问题:
你有想法如何使这段代码更好,即如何避免转换?对于小数和浮点数,它似乎可以工作,因为它们被明确声明为小数/浮点值。Long 也可以正常工作。
如果没有其他方法,除了短和字节之外还有其他类型我需要担心吗?
演示代码如下:
var table = new DataTable();
table.Columns.Add(new DataColumn("CarrierId", typeof(byte)));
table.Columns.Add(new DataColumn("NotationId", typeof(short)));
var row = table.NewRow();
row[0] = 5;
row[1] = 123;
table.Rows.Add(row);
var expected = new Dictionary<string, object>
{
{"CarrierId", 5},
{"NotationId", 123},
};
foreach (var entry in expected)
{
var value = row[entry.Key];
var expectedValue = entry.Value;
if (value is short || value is byte)
value = Convert.ToInt32(value);
Console.WriteLine();
Console.WriteLine(String.Format("Not converted: {0}", row[entry.Key].Equals(entry.Value)));
Console.WriteLine(String.Format("Converted (if applicable): {0}", value.Equals(expectedValue)));
}