当前位置:  开发笔记 > 编程语言 > 正文

从DataRow获取价值之间的差异

如何解决《从DataRow获取价值之间的差异》经验,为你挑选了1个好方法。

示例代码:

    DataTable table = new DataTable();

    // ...
    // insert column to table

    table.Columns.Add("name");

    // ...
    // insert value to table

    foreach (DataRow row in table.Rows) {
         row["name"];
         row.Field("name");     
    }

我的问题是:

使用row["name"]和之间有区别row.Field("name")吗?当然,第二种方式将价值转化为某种类型,但又有另一种区别吗?

哪种方法更好用?

Грозный.. 16

请参阅备注部分,其中描述的主要差异:

数据集类代表与价值的实例值的DBNull类.访问具有值的列的语言集成查询(LINQ)表达式将在运行时生成 InvalidCastException.此外,DataSet不支持可空类型.Field方法支持将列作为可空类型进行访问.如果DataSet中的基础值为Value,则返回的可空类型的值为 null.

如果指定的DataColumn的值为null并且T是引用类型或可空类型,则返回类型将为null.Field方法不会返回Value.

Field方法不执行类型转换.如果需要类型转换,则应首先使用Field方法获取列值.然后应将列值转换为另一种类型.

最后一段提到了一点,因为我经常看到数字存储为数据库中的字符串,因此在数据检索时需要varchar进行int转换,因此在这种情况下使用DataColumn会更好,例如:

int test = row.Field("Test"); // InvalidCastException
int test = Convert.ToInt32(row["Test"]); // Works like a charm

DataRowExtensions.Field Method (DataRow, String)首先出现在.NET 3.5中,它"提供对指定行中每个列值的强类型访问.Oield方法还支持可空类型."

Afaik,row["name"]返回object,row.Field("name")返回一个String.我们不应该比较苹果和梨,因此你应该问什么更好:

row["name"].ToString()vs row.Field("name") 和答案是:他们是一样的.



1> Грозный..:

请参阅备注部分,其中描述的主要差异:

数据集类代表与价值的实例值的DBNull类.访问具有值的列的语言集成查询(LINQ)表达式将在运行时生成 InvalidCastException.此外,DataSet不支持可空类型.Field方法支持将列作为可空类型进行访问.如果DataSet中的基础值为Value,则返回的可空类型的值为 null.

如果指定的DataColumn的值为null并且T是引用类型或可空类型,则返回类型将为null.Field方法不会返回Value.

Field方法不执行类型转换.如果需要类型转换,则应首先使用Field方法获取列值.然后应将列值转换为另一种类型.

最后一段提到了一点,因为我经常看到数字存储为数据库中的字符串,因此在数据检索时需要varchar进行int转换,因此在这种情况下使用DataColumn会更好,例如:

int test = row.Field("Test"); // InvalidCastException
int test = Convert.ToInt32(row["Test"]); // Works like a charm

DataRowExtensions.Field Method (DataRow, String)首先出现在.NET 3.5中,它"提供对指定行中每个列值的强类型访问.Oield方法还支持可空类型."

Afaik,row["name"]返回object,row.Field("name")返回一个String.我们不应该比较苹果和梨,因此你应该问什么更好:

row["name"].ToString()vs row.Field("name") 和答案是:他们是一样的.

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有