gpt4 book ai didi

c# - 在 C# 中开始使用返回的 DataRow 类型的推荐方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 17:23:14 25 4
gpt4 key购买 nike

当循环遍历 DataRow 并遇到诸如

之类的类型时
DataRow dr;
dr["someString"]
dr["someInteger"]
dr["somedata"]

将它们转化为相应数据类型的最佳方法是什么? dr["foo"] 只是一个通用对象。

此外,这些是否可以轻松转换为可空类型? dr["someInteger"] 可以为空。

最佳答案

从 DataRow 读取数据时,最大的敌人是空值。在 DataRow 中,当值为 null 时,它不等于 null:它等于 DBNull.Value

if(DBNull.Value == null)
{
// Will never happen
}

除非您知道您的字段不能为空,否则进行转换是不安全的。例如,如果数据为 DBNull,则以下示例将失败:

string name = (string)dr["Name"];

如果可以使用 LINQ 扩展,则可以包含引用 System.Data.DataSetExtensions 和命名空间 System.Data 并调用

string name = dr.Field<string>("Name");

如果您不能使用 LINQ,则必须退回到检查空值

string name = null;
if(!dr.IsNull("Name"))
name = (string)dr["Name"];

或者您可以像这样编写自己的 Field 函数:

public static T GetValue<T>(object value)
{
if (value == null || value == DBNull.Value)
return default(T);
else
return (T)value;
}

并以这种方式获得您的值(value):

string name = GetValue<string>(dr["Name"]);

关于c# - 在 C# 中开始使用返回的 DataRow 类型的推荐方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1381349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com