我有一个数据文件
Name; LastName; EurosCents;
Name2; LastName2; EurosCents2;
(例如:
John; Smith; 4,20;
Josh; Peck; 6,50;
)
我需要读取数据,然后用它做一些进一步的工作......有没有办法读取行并保存它们?从文本文件中读取的唯一方法是立即读取整行。
答案 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) {
...
}
}