有没有一种方法可以在不使用foreach循环的情况下获得DataTable中的FileNames列表?
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;发布于 2013-07-08 18:22:36
Linq对你隐藏了循环,但它还是会使用它们:
List<String> allFileNames = dtOutput.AsEnumerable()
.Select(r => r.Field<string>("FileName"))
.ToList();但是,既然已经有了表,它也是内存中的集合,为什么还要有一个列表呢?
如果您想在另一个多行TextBox中显示这些文件名,您可以使用:
txtBoxWriteTo.Lines = dtOutput.AsEnumerable()
.Select(r => r.Field<string>("FileName"))
.ToArray();发布于 2013-07-08 18:18:45
将select对象转换为Enumerable().
string[] strSummCities = dtTemp1.AsEnumerable().Select(s => Temp1.AsEnumerable
希望这将有助于解决您的问题。
发布于 2013-07-08 18:21:33
为了获得可枚举值的CopyToDataTable(),您应该添加一个对System.Data.DataSetExtension的引用,然后您可以使用:
DataTable dtOutput =
Directory.EnumerateFiles(txtBoxReadFrom.Text, txtBoxTargetFilter.Text).Select(r =>
{
DataRow row = dtOutput.NewRow();
row["fileName"] = r;
return row;
}).CopyToDataTable();https://stackoverflow.com/questions/17524078
复制相似问题