我有非常简单的代码解释自己。
List<string> Files = new List<string>( Directory.EnumerateFiles(PathLocation));
但是我现在希望让生活变得复杂,我有一个文件对象。
public class File
{
public int FileId { get; set; }
public string Filename { get; set; }
}
是否有最佳方法来填充类的字符串属性,即有没有比使用foreach循环或类似方法更好的方法?
答案 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);