将txt文件读入元组

Wal*_*lid 0 c# text loops tuples

如果我的txt文件包含与这些类似的行:

1.1, 0.1836856, 5.6
3.3, -5.5, 43.44
-0.38162, 6.636666E-08, 3.1
1.01516E-07, 0.3695395, 1.5
Run Code Online (Sandbox Code Playgroud)

如何将文件读入元组?

var reader = new StreamReader(File.OpenRead(@"C:\MyFile.txt"));

while (!reader.EndOfStream)
{
    var line = reader.ReadLine();
    var values = line.Split(',');

    var val1 = decimal.Parse(values[0], System.Globalization.NumberStyles.Float);
    var val2 = decimal.Parse(values[1], System.Globalization.NumberStyles.Float);
    var val3 = values[2];

    Tuple<decimal, decimal, string> myTuple = Tuple.Create<decimal, decimal, string>(val1, val2, val3);
}
Run Code Online (Sandbox Code Playgroud)

Gra*_*ICA 5

你基本上就在那里..只需将每个元组添加到一个List中,这样它们就不会在每次迭代结束时丢失.

while循环之外和循环之前定义List :

var results = new List<Tuple<decimal, decimal, string>>();
Run Code Online (Sandbox Code Playgroud)

然后在循环中添加每个新的Tuple实例:

results.Add(Tuple.Create(val1, val2, val3));
Run Code Online (Sandbox Code Playgroud)

你也可以考虑更换File.OpenRead()File.ReadLines().它打开你的文件,读取所有行,并一次性关闭它.


这些东西看起来与你拥有的东西真的不同......只是扔掉它.它是否更清楚取决于你.它使用LINQ.

它读取文件,然后拆分并Tuple为每一行创建一个,生成相同的List.

var results = (from line in File.ReadLines(@"C:\MyFile.txt")
               let values = line.Split(',')
               select Tuple.Create(decimal.Parse(values[0], NumberStyles.Float),
                                   decimal.Parse(values[1], NumberStyles.Float),
                                   values[2])).ToList();
Run Code Online (Sandbox Code Playgroud)