从数据库中为可空字段进行转换

时间:2018-03-27 19:45:16

标签: c# ado.net

使用可空字段时,建议的语句是什么?

这四项任务似乎工作正常,我只是想知道我应该使用哪种陈述。

DataRow detailRow;
...
int? field = detailRow["fieldName"] == DbNull.Value ? default(int?) : (int)detailRow["fieldName"];
int? field = (int?)detailRow["fieldName"];
int? field = Int32.TryParse(detailRow["fieldName"] as String, out var parsedInt) ? parsedInt : default(int?)
int? field = detailRow.Field<int?>("fieldName"); //Field is a extension from System.Data

2 个答案:

答案 0 :(得分:2)

using System.Data;

...

int? field = detailRow.Field<int?>("fieldName");

使用.Field扩展程序https://msdn.microsoft.com/en-us/library/bb360891(v=vs.110).aspx

答案 1 :(得分:1)

如果您知道该列的数据类型为int?(或任何其他可以为空的类型),则可以使用以下内容:

int? field = detailRow["fieldName"] as int?;

代码简短,易读且不言自明。如果该列包含int?以外的任何内容,则无论如何都会分配NULL