1

我有一个可变数组字符串:

string[] imgList = new[] { };

我检索文件列表:

DirectoryInfo directory = new DirectoryInfo(path);
FileInfo[] files = directory.GetFiles("*.jpg");

我想使用 LINQ 将结果添加到我的 varray 中。有些像这样:

imgList = files.Where(x => x.FullName).ToList();

我怎样才能做到这一点?

4

4 回答 4

3

在查询中更改为WhereSelectToList()ToArray()

imgList = files.Select(x => x.FullName).ToArray();
于 2013-08-30T07:52:31.853 回答
2

像这样的东西:

DirectoryInfo directory = new DirectoryInfo(path);
FileInfo[] files = directory.GetFiles("*.jpg");

string[] imgList = files.Select(p => p.Name).ToArray();

// or, without LINQ, probably a little faster:

string[] imgList = Array.ConvertAll(files, p => p.Name);

请注意,在这两种情况下,您都不需要事先创建数组,因为Array.Convert/会返回一个新数组.ToArray()

于 2013-08-30T07:54:31.137 回答
1

您的代码中有一些错误。

首先,您的字符串数组声明不正确,
其次您尝试转换.ToList()为字符串数组。所以尝试这样的事情

 string[] imgList = new string[] { };
 DirectoryInfo directory = new DirectoryInfo(path);
 FileInfo[] files = directory.GetFiles("*.jpg");

 imgList = files.Where(x => x.FullName == "myCondition").Select(x => x.FullName).ToArray();
于 2013-08-30T07:53:15.173 回答
1

有一个返回数组的方法,以及您使用的返回 a 的方法List<T>,所以试试:

imgList = files.Select(x => x.FullName).ToArray();
于 2013-08-30T07:53:52.890 回答