如何使用行名称从DataRow获取值
本文关键字:DataRow 获取 何使用 | 更新日期: 2023-09-27 17:59:45
我有一个表格,格式如下:
Name Value
-------------------------------
IsFirst 0
skateType 0
IsApplied 1
我有一个类DetailsClass
,需要根据表中的值更新它的对象。
public class DetailsClass
{
[DataMember]
public bool IsFirst { get; set; }
[DataMember]
public bool skateType { get; set; }
[DataMember]
public bool IsApplied { get; set; }
}
现在我正在做:
foreach (DataRow row in dataTable.Rows)
{
if (String.Equals(row["Name"].ToString(), "IsFirst"))
VDetail.Base = dataTable.Rows[0]["Value"] != null ? Convert.ToBoolean(dataTable.Rows[0]["Value"]) : false;
else if (String.Equals(row["Name"].ToString(), "skateType"))
VDetail.Type = dataTable.Rows[1]["Value"] != null ? Convert.ToBoolean(dataTable.Rows[0]["Value"]) : false;
else if (String.Equals(row["Name"].ToString(), "IsApplied"))
VDetail.IsApplied = dataTable.Rows[2]["Value"] != null ? Convert.ToBoolean(dataTable.Rows[0]["Value"]) : false;
}
但是有更好的方法吗?
解释1
按名称访问字段的一种方法是行。字段("columnName")。只需将"long"替换为列的数据类型,将columnName替换为正确的名称。
解释2
如果你想要的是一种将数据从表映射到对象的方法,那么我建议这样做:
var detail = new DetailsClass();
foreach (var row in dataTable.Rows)
{
if (row.Field<string>("Name") == "IsFirst")
detail.IsFirst = row.Field<bool>("IsFirst");
else if (row.Field<string>("Name") == "skateType")
detail.skateType = row.Field<bool>("skateType");
else if (row.Field<string>("Name") == "IsApplied")
detail.IsApplied = row.Field<bool>("IsApplied");
}
我假设表中的数据类型是位字段,因为类对象具有bool。