从DataRow以干燥方式获取字符串



我一直在到处搜索,但我似乎找不到一个好方法。目前,我一直从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"]

最简单的方法是什么?

使用System.Data.DataSetExtensions的扩展方法进行强大的数据访问。

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);
}

最新更新