我有一个表格,格式如下:
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;
}
但有更好的方法吗?
答案 0 :(得分:0)
解读1
按名称访问字段的方法是row.Field(“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。