C#将一行中的数据与文本文件

时间:2016-09-14 08:03:12

标签: c# list file names

我有一个数据文件

Name; LastName; EurosCents;
Name2; LastName2; EurosCents2;

(例如:

John; Smith; 4,20;
Josh; Peck; 6,50;

我需要读取数据,然后用它做一些进一步的工作......有没有办法读取行并保存它们?从文本文件中读取的唯一方法是立即读取整行。

5 个答案:

答案 0 :(得分:2)

var lst = File.ReadAllLines(yourFilePath).Select(x => new
{  
   FirstName = x.Split(';')[0]
   LastName = x.Split(';')[1]
   Value = decimal.Parse(x.Split(';')[2])
}).ToList();

使用

lst[7].FirstName = "xxx";
Console.WriteLine(lst[2].Value);

等...

答案 1 :(得分:0)

File API提供了多种读取文件的选项。以下是可行的方法:

foreach(var line in File.ReadAllLines(path))
{
    var splitted = line.Split(';');
    var name = splitted.ElementAtOrDefault(0);
    var lastName = splitted.ElementAtOrDefault(1);
    var cents = Decimal.Parse(splitted.ElementAtOrDefault(2));
}

答案 2 :(得分:0)

读取整个文件的简单代码如下

    string[] test(string path)
    {
        System.IO.StreamReader sr = new System.IO.StreamReader(path);
        string[] str = sr.ReadToEnd().Split(';');
        sr.Close();
        return str;
    }

答案 3 :(得分:0)

如果您习惯使用LINQ,解析将非常容易。 下面的行可以为您提供分层结构的文件。

 var theselines = File.ReadLines(@"C:\Test.txt").Select(l => l.Split(','));

你可以通过调试看到上面一行的结果。 稍后您可以使用任何逻辑从每行获取所需数据,而无需使用foreach循环。

        var Data = theselines.Select(l => new
        {

            id = l.Where(t => t.Contains("01")).FirstOrDefault(),
            Price = l.Where(t => t.Contains(",")).FirstOrDefault(),
            Firstname= l[0],
            lastname = l[1]
        });

答案 4 :(得分:0)

提供数据本身(名称和分数)不能包含;才能获得 来自逗号分隔值的项目,您只需拆分

var data = File
  .ReadLines(@"C:\MyData.csv")
  // .Skip(1) // <- in case you have caption to skip
  .Select(line => line.Split(';'))
  .Select(items => new {
       Name = items[0],
       LastName = items[1],
       EuroCents = decimal.Parse(items[2]) //TODO: check type and its format
    });
  //.ToArray(); // <- if you want to materialize as, say, an array

然后你可以使用它

 foreach (var item in data) {
   if (item.EuroCents > 10) {
     ...
   }
 }