从不同类型的数据表中读取
本文关键字:读取 数据表 同类型 | 更新日期: 2023-09-27 18:30:46
if (_dt.Rows.Count > 0)
{
foreach (DataRow row in _dt.Rows)
{
pUsername = row["tUsername"] == DBNull.Value ? " " : row["tUsername"].ToString();
pDomain = row["tDomain"] == DBNull.Value ? " " : row["tDomain"].ToString();
pStatus = row["tStatus"] == DBNull.Value ? 0 : Convert.ToInt32(row["tStatus"].ToString());
// pAdmin = (bool)row["tInstallType"];
}
}
如何从数据表中读取不同类型的数据?我每次都必须去串吗? .为什么我不能从数据库中读取为整数类型?我认为主要问题是row["tStatus"].ToString()
您可以直接从数据表中读取整数:
int myInt = row.Field<int>("myInt");
int? myNullableInt = row.Field<int?>("myNullableInt"); // NULL (DB) -> null (C#)
int myInt = row.Field<int?>("myNullableInt") ?? 0; // NULL (DB) -> 0 (C#)
这使用 .net 3.5 中引入的新 DataRowExtensions.Field 方法。显然,这不仅限于int
,而是适用于所有基元 C# 类型及其可为 null 的对应项。请注意,与索引器相反,Field
返回数据库 NULL 值的null
,而不是 DBNull.Value。
有一个通用的扩展方法 DataRow.Field,所以在你的 pUsername 示例中,你可以执行以下操作:
string pUsername = row.Field<string>( "tUsername" );
和
int? pStatus = row.Field<int?>("tStatus")
哪些是imo,也更干净。
DataRow 有 Field 语言扩展方法。
例
foreach (DataRow row in dt.Rows)
{
Console.WriteLine("{0} - {1}",row.Field<string>("FirstName"), row.Field<int?>("SomeIntField"));
}