使用LINQ在Varray中添加值

时间:2013-08-30 07:49:06

标签: c# linq

我有一个varray字符串:

string[] imgList = new[] { };

我检索文件列表:

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

我想用LINQ添加我的varray结果。有人喜欢这样:

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

我该怎么做?

4 个答案:

答案 0 :(得分:3)

在查询中将Where更改为Select,将ToList()更改为ToArray()

imgList = files.Select(x => x.FullName).ToArray();

答案 1 :(得分: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()会返回一个新数组。

答案 2 :(得分: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();

答案 3 :(得分:1)

有一个方法可以返回一个数组,以及你正在使用的返回List<T>的方法,所以请尝试:

imgList = files.Select(x => x.FullName).ToArray();