2012-09-28 40 views
0

我有非常简单的代码来解释自己。C#最佳方式来填充列表<Class>来自列表<string>

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

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

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

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

+0

代码可以解释本身,但问题没有。 ;)你想要填充什么?结果应该是一个列表,其格式为'List ',其中每个'File'都填充了'Directory.EnumerateFiles(...)'的结果? – Kjartan

+1

什么是'FileID'? –

+1

谢谢,一些很好的答案,非常感谢。我接受了最快的答案,因为质量对所有人都有益。 – Gavin

回答

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(); 
+0

两者都是LINQ,前一种方法和后一种查询语法;) –

1
List<File> bigList; 
var stringList = bigList.Select(f=>f.Filename); 
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

5

当然:

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