DataRow是ADO.NET中DataTable的一行数据,它包含了多个DataColumn的值。在C#中,我们可以通过多种方式获取DataRow中的值。
// 假设有一个名为"Name"的列
string name = row["Name"].ToString();
// 或者使用强类型转换
int age = Convert.ToInt32(row["Age"]);
// 获取第一列的值
object firstValue = row[0];
// 获取第二列的值并转换为字符串
string secondValue = row[1].ToString();
// 强类型获取值
string name = row.Field<string>("Name");
int age = row.Field<int>("Age");
DateTime birthDate = row.Field<DateTime>("BirthDate");
// 可处理DBNull.Value
int? nullableAge = row.Field<int?>("Age"); // 如果Age列允许NULL
// 获取所有列的值数组
object[] values = row.ItemArray;
数据库中的NULL在.NET中表示为DBNull.Value,需要特殊处理:
// 检查是否为NULL
if (row["MiddleName"] != DBNull.Value)
{
string middleName = row["MiddleName"].ToString();
}
// 使用Field<T>处理NULL更简洁
string middleName = row.Field<string>("MiddleName") ?? string.Empty;
// 解决方案:检查列是否存在
if (row.Table.Columns.Contains("ColumnName"))
{
var value = row["ColumnName"];
}
// 解决方案:使用Try-Catch或TryParse
try
{
int number = Convert.ToInt32(row["NumberColumn"]);
}
catch (FormatException)
{
// 处理转换失败
}
// 或者
if (int.TryParse(row["NumberColumn"].ToString(), out int number))
{
// 转换成功
}
// 解决方案:使用Field<T>或显式检查
var value = row["NullableColumn"] == DBNull.Value ? null : row["NullableColumn"].ToString();
Field<T>
方法,因为它提供了类型安全和NULL处理int?
, DateTime?
)示例代码:
DataTable table = GetDataTable(); // 假设这是从某处获取的DataTable
foreach (DataRow row in table.Rows)
{
// 使用Field<T>安全获取值
int id = row.Field<int>("ID");
string name = row.Field<string>("Name") ?? "Unknown";
DateTime? birthDate = row.Field<DateTime?>("BirthDate");
Console.WriteLine($"ID: {id}, Name: {name}, BirthDate: {birthDate?.ToShortDateString() ?? "N/A"}");
}
没有搜到相关的文章