0

我有非常简单的代码可以解释自己。

List<string> Files = new List<string>( Directory.EnumerateFiles(PathLocation));

但是,我现在希望让生活变得复杂,并且我有一个文件对象。

public class File
{
    public int FileId { get; set; }
    public string Filename { get; set; }
}

是否有填充类的字符串属性的最佳方法,即是否有比使用 foreach 循环或类似循环更好的方法?

4

4 回答 4

5

您可以使用 LINQSelect替换 foreach 循环:

List<File> files = Files.Select(s => new File() { FileId = id, Filename = s})
                        .ToList();

但无需创建新List的来优化您的代码:

List<File> files = Directory.EnumerateFiles(PathLocation)
                            .Select(s => new File() { FileId = id, Filename = s})
                            .ToList();

MSDN 在这里

于 2012-09-28T08:56:47.430 回答
5

当然:

List<File> Files = Directory.EnumerateFiles(PathLocation).Select(f=> new File { FileId = /*...*/, Filename = f }).ToList();
于 2012-09-28T08:56:52.947 回答
4

您可以将 的内容映射FilesList<File>

var files = Files.Select(f => new File { Filename = f })
                 .ToList();

同样使用LINQ语法:

var query = from f
            in Files 
            select new File { Filename = f };

var files = query.ToList();
于 2012-09-28T08:58:08.287 回答
1
List<File> bigList;
var stringList = bigList.Select(f=>f.Filename);
于 2012-09-28T08:56:18.013 回答