Linq查询中的DataTypes

时间:2016-03-13 12:47:37

标签: c# sql linq types

我已经阅读过关于SQL-CLR类型映射但是没有得到它......两者都在控制台中显示Int16但是当我尝试时

f.smallId = dr[0];

即使是简单的测试

Int16 test=dr[0];

不起作用: 它现在说dr [0]是一个对象

NpgsqlCommand command = new NpgsqlCommand("select id from database", conn);
NpgsqlDataReader dr = command.ExecuteReader();
while (dr.Read())
{
    Console.WriteLine(dr[0].GetType());
    foreach (Definitions f in files)
    {
        Console.WriteLine(f.smallId.GetType());
        f.smallId = dr[0];
    }
}

1 个答案:

答案 0 :(得分:1)

是的,因为DbDataReader.Item property 返回object并且objectInt16之间没有隐式对话,但 是明确的对话。

只需使用;

Int16 test = (Int16)dr[0];

还可以使用using语句自动处理命令和适配器。