如何在c#中将一列数据放入列表中

本文关键字:数据 一列 列表 | 更新日期: 2023-09-27 18:01:51

我想为c# windows表单应用程序提供一些指导,以便能够将一整列的数字放入列表中,数据将是文本基础,例如它将包含4列,如下所示:

100 200 300 400
100 200 300 400
101 292 83  7312

我可以把整个文本放到一个列表中,但是我想要有4个不同的列表,如果有意义的话,把每一列放到它自己的列表中。

我是否必须读取每一行,并以某种方式将分割然后添加到列表中?

p。我不期望代码只是可能是最好的方法能够做到这一点,如果我在正确的轨道上?

如何在c#中将一列数据放入列表中

我不会将这些值读入单独的列表中。如果您维护单独的列表,则需要担心保持所有列表同步。我将创建一个对象,您可以使用它来保存一行中的所有信息。

public class Entry
{
    // give meaningful names to the column values
    public int Column1 { get; set; }
    public int Column2 { get; set; }
    public int Column3 { get; set; }
    public int Column4 { get; set; }
    // overriden to make re-constructing the line for the file easier
    public override string ToString()
    {
        // assuming tab as the delimiter, replace with whatever you're using
        return string.Format("{0}'t{1}'t{2}'t{3}", this.Column1, this.Column2,
            this.Column3, this.Column4);
    }
}

当你读取值时,你可以这样做:

var entries = new List<Entry>();
using (var fStream = File.OpenRead(fileLocation))
using (var reader = new StreamReader(fStream))
{
    while (!reader.EOF)
    {
        var line = reader.ReadLine();
        // assuming tab as the delimiter, replace with whatever you're using
        var parts = line.Split(''t');
        if (parts.Length != 4)
        {
            // whatever you need to do for error handling
            // you could throw an error or just skip to the next line
            continue;
        }
        entries.Add(
            new Entry
            {
                // ideally you'd use int.TryParse to provide further error handling
                Column1 = int.Parse(parts[0]),
                Column2 = int.Parse(parts[1]),
                Column3 = int.Parse(parts[2]),
                Column4 = int.Parse(parts[4])
            }
        );
    }
}

然后,如果你只需要与一个列值交互,你可以使用LINQ来查询你需要的值

var column1Values = from entry in entries
                    select entry.Column1;

你做对了。我个人喜欢File.ReadAllLines(@"yourTxtFile")。在我看来,它使代码简单。

foreach(var line in File.ReadAllLines(@"yourTxtFile"))
{
   // split and add to the respective lists here
}