在c#

时间:2018-12-12 20:37:04

标签: c#

我一直在做一个小项目,遇到了这个问题。我有一个充满行的txt文件,我需要将它们存储在列表中。有什么优雅的方法吗?这是我的代码,但是,由于某些问题已无法解决,因此无法正常工作。 txt文件有126行,但我只需要125行。谢谢您的宝贵时间,我们将不胜感激:)

string[] Number = System.IO.File.ReadAllLines("Numbers.txt");
List<string> listNumbers = new List<string>(); //place where all numbers will be stored
for (int i = 0; i<125; i++)
{
    listNumbers[i] = Number[i];
}

3 个答案:

答案 0 :(得分:5)

只需致电ToList()

myArray.ToList();

或:

var list = new List<string>(myArray);

答案 1 :(得分:4)

Array<string>实现了IEnumerable<string>,因此,如果您使用System.Linq,则可以使用许多便捷的扩展方法。

using System.Linq;

// ...

var listNumbers = System.IO.File
    .ReadAllLines("Numbers.txt")
    .Take(125)
    .ToList();

答案 2 :(得分:0)

List有一个AddRange()方法,该方法接受一个可枚举的对象(例如您的数组),并将其中的所有项添加到列表中。之所以有用,是因为它不需要LINQ,并且与将数组传递到List构造函数不同,如果列表是在其他位置构造/已经由其他进程实例化的,则可以使用它。

    //if your list is constructed elsewhere 
     List<string> listNumbers = new List<string>(); 

    //addrange can still be used to populate it 
    string[] lines = System.IO.File.ReadAllLines("Numbers.txt");
    listNumbers.AddRange(lines);

可以使用类似的InsertRange将枚举中的所有值放入列表中的特定位置

如果您只需要将一定数量的项目放入列表,则最紧凑的方法可能是使用linq:

var list = lines.Take(125).ToList();

下一个最紧凑的方法是使用for循环完成操作