【问题标题】:Populate List<string> from DataTable column从 DataTable 列填充 List<string>
【发布时间】:2020-06-03 19:24:18
【问题描述】:

我有一个数据表dt,其中包含一列和一个字符串列表。如果我想将其更改为一个列表(例如,为了更容易与另一个列表进行比较),我会默认为:

var ls = new List<string>();
foreach (DataRow dr in dt.Rows)
{
    ls.Add(dr["COLUMN_NAME"].ToString());
}

我认为不可能比这更有效,但是有没有更短的方法来编写这个,也许使用 LINQ?

【问题讨论】:

  • 使用 Linq 编写的方法越短,效率越高
  • 好吧,您可以通过使用像数组这样的固定大小的结构并用for 替换foreach 来对此进行微优化,但我怀疑这种差异甚至不会很明显。
  • 这很好。在这一点上,我不需要担心微优化,尤其是因为我的数据通常少于 500 个值。
  • 这能回答你的问题吗? LINQ query on a DataTable
  • 适应所选的欺骗是微不足道的。从靠近到选择关闭。 myDataTable .AsEnumerable() .Select(myRow =&gt; myRow.Field&lt;TheType&gt;("TheColumnName"));

标签: c# linq


【解决方案1】:

正如评论中提到的,LINQ 方式的代码可能更短,但效率并不高。 不管怎样,这里是单行 LINQ 版本。

var list = new List<string>(dt.Rows.Cast<DataRow>().Select(r => r["COLUMN_NAME"].ToString()));

【讨论】:

  • 谢谢,这看起来不错。我会看看效率下降是否对我的数据有显着影响。
猜你喜欢
  • 2012-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-14
  • 2020-10-28
  • 1970-01-01
相关资源
最近更新 更多