从DataRow获取字符串DRY方式

时间:2017-02-18 04:25:41

标签: c# asp.net

我一直在寻找,但我似乎无法找到一个好方法。目前我已经从我的SQL表中获得DataRowCollection,但我希望有一种更有效的方法从单元格中获取字符串。

这是我目前要做的事情:

foreach (DataRow row in DataRowCollection)
    string firstName = row["FirstName"].toString();
    string lastName = row["LastName"].toString();
    string email = row["Email"].toString();
    etc...
}

我已经尝试创建一个包含字符串列表的列表,但它似乎也没有按照我喜欢的方式运行。  但我想要有一些东西而不必像这样使用“toString()”...

foreach (DataRow row in DataRowCollection)
    string firstName = row["FirstName"];
    string lastName = row["LastName"];
    string email = row["Email"];
}

我觉得这会让事情变得更加整洁,所以我不必设置变量,只需在获取值时使用row["column"]

最简单的方法是什么?

1 个答案:

答案 0 :(得分:0)

使用System.Data.DataSetExtensions中的extension methods进行强类型数据访问。

var firstName = row.Field<string>("FirstName");
var lastName = row.Field<string>("LastName");
var email = row.Field<string>("Email");

编辑:要将DataTable转换为List<List<string>>,请使用Linq

实施例

var list = dataTable.Rows
    .Cast<DataRow>()
    .Select(dr => dr.ItemArray.Cast<string>())
    .ToList();

或嵌套的foreach

var list = new List<List<string>>();
foreach (var row in DataRowCollection) {
    var subList = new List<string>();
    foreach (var item in row.ItemArray)
        subList.Add(item.ToString());
    list.Add(subList);
}