将当前Collection <t>保存在循环中

时间:2016-12-06 13:30:57

标签: c# collections

我在收藏清单方面遇到了一些问题。我使用该列表来保存我从xml和textfiles收集的一些客户数据。

// First i create an instance of the list  
List<Customer> cusList = new List<Customer>();
// Save files
String[] somefiles = Directory.GetFiles(//FromPath");

// Then i loop through some files and collect data for the list
for (int i=0; i<somefiles.length; i++)
{
    if (some statements match)
    {
        // call a methode and save file data to the cuslist
        cuslist= callmethode(somefiles);
    }
    else 
    {
     System.Console.WriteLine("Do nothing");
    }
 }

我想扩展所有文件的列表,但是目前我只获得了来自最后一个文件的循环数据。

我如何处理它,它会保存所有文件中的所有数据?

亲切的问候

2 个答案:

答案 0 :(得分:6)

当您编写cuslist= callmethode(file);时,您会在每次迭代时重新分配列表。你需要的是这样的东西:

cuslist.AddRange(callmethode(file));

这只会将方法返回的元素添加到列表中,而不是替换整个列表。

如果方法只返回一个元素,请使用cuslist.Add

答案 1 :(得分:4)

HimBromBeere解释了这个问题并提供了正确答案,正如旁注:

您可以使用LINQ来简化此任务:

List<Customer> cusList = somefiles
    .Where(f => some statements match)
    .SelectMany(f => callmethode(f))
    .ToList();