2016-12-29 30 views
0

创建它们的参数列表构建的对象列表我要完成这个样子的(而不是在LINQ)从使用LINQ

List<FileInfo> InfoList: ... //Already populated. 
List<string> fileNames = new List<string>(InfoList.Count); 
InfoList.ForEach(s => filesNames.Add(s.Name.ToString())); 

我已经写上面的代码。我想把这个下一部分转换成linq。

List<ZipArchiveEntry> ZipList = new List<ZipArchiveEntry>(InfoList.Count); 

for(int i = 0; i < InfoList.Count; i++) 
{ 
    ZipArchiveEntry = archive.CreateEntry(fileNames[i]); 
    ZipList.Add(ZipArchiveEntry); 
} 

所以基本上,我想知道你是否可以使用列表元素作为函数的参数来构建对象列表。

要创建一个zip存档条目,我需要调用方法archive.CreateEntry(filename),并且文件名是我已经构建的列表的元素。

回答

3

这看起来像一个正常的投影,所以Select()是你的方法:

var ZipList = fileNames.Select(archive.CreateEntry).ToList(); 

顺便说一句,你fileNames清单可以很容易像创建:

var fileNames = InfoList.Select(s => s.Name.ToString()).ToList(); 
2

您可以创建ZipList直接从InfoList

var ZipList = InfoList.Select(x => archive.CreateEntry(x.Name.ToString())) 
         .ToList();