首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataTable - First列中的FileNames

DataTable - First列中的FileNames
EN

Stack Overflow用户
提问于 2013-07-08 18:12:01
回答 3查看 2K关注 0票数 0

有没有一种方法可以在不使用foreach循环的情况下获得DataTable中的FileNames列表?

代码语言:javascript
复制
DataTable dtOutput = new DataTable();
dtOutput.Columns.Add("FileName", typeof(string));
dtOutput.Columns.Add(Col2..., typeof(decimal));
...

foreach (string file in Directory.EnumerateFiles(txtBoxReadFrom.Text, txtBoxTargetFilter.Text))
{
   dtOutput.Rows.Add(Path.GetFileName(file));                
}
progressBar1.Maximum = dtOutput.Rows.Count;
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-08 18:22:36

Linq对你隐藏了循环,但它还是会使用它们:

代码语言:javascript
复制
List<String> allFileNames = dtOutput.AsEnumerable()
     .Select(r => r.Field<string>("FileName"))
     .ToList();

但是,既然已经有了表,它也是内存中的集合,为什么还要有一个列表呢?

如果您想在另一个多行TextBox中显示这些文件名,您可以使用:

代码语言:javascript
复制
txtBoxWriteTo.Lines = dtOutput.AsEnumerable()
     .Select(r => r.Field<string>("FileName"))
     .ToArray();
票数 0
EN

Stack Overflow用户

发布于 2013-07-08 18:18:45

将select对象转换为Enumerable().

  • Apply
  1. 子句,并将列名用作字段名。
  2. 将其转换为字符串数组。

string[] strSummCities = dtTemp1.AsEnumerable().Select(s => Temp1.AsEnumerable

希望这将有助于解决您的问题。

票数 0
EN

Stack Overflow用户

发布于 2013-07-08 18:21:33

为了获得可枚举值的CopyToDataTable(),您应该添加一个对System.Data.DataSetExtension的引用,然后您可以使用:

代码语言:javascript
复制
DataTable dtOutput =  
       Directory.EnumerateFiles(txtBoxReadFrom.Text, txtBoxTargetFilter.Text).Select(r =>
                                                      {
                                                       DataRow row = dtOutput.NewRow();
                                                       row["fileName"] = r;
                                                       return row;
                                                      }).CopyToDataTable();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17524078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档