从List <string> </string> </class>填充List <class>的C#最佳方法

时间:2012-09-28 08:54:44

标签: c#

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

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

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

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

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

4 个答案:

答案 0 :(得分:5)

您可以使用LINQ Select替换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是here

答案 1 :(得分:5)

不确定

List<File> Files = Directory.EnumerateFiles(PathLocation).Select(f=> new File { FileId = /*...*/, Filename = f }).ToList();

答案 2 :(得分:4)

您可以将Files的内容映射到List<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();

答案 3 :(得分:1)

List<File> bigList;
var stringList = bigList.Select(f=>f.Filename);