从数据表中提取列

0 c# datatable c#-4.0

有没有一种方法可以从 DataTable 中的单个列中提取所有项目,而不是使用 For Each 循环?

例如,以下内容从 DataTable 的单列中的每一行构建一个 KeyValuePair 列表

List<KeyValuePair<string, double>> extract = new List<KeyValuePair<string, double>>();
foreach (DataRow item in _dataTableTest.Rows)
{
    KeyValuePair<string, double> selection = (KeyValuePair<string, double>)item["Selection"];
    extract.Add(selection);
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法和/或更快的方法来做到这一点?

Tim*_*ter 5

你可以使用Linq-To-DataTable

List<KeyValuePair<string, double>> extract = _dataTableTest.AsEnumerable()
          .Select(r => r.Field<KeyValuePair<string, double>>("Selection"))
          .ToList();
Run Code Online (Sandbox Code Playgroud)

请注意,您需要添加using System.Linq;,并且这在性能方面并不“更快”。它还在内部使用循环。