如何使用行名称从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;
                }

但是有更好的方法吗?

如何使用行名称从DataRow获取值

解释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。