我是C#的新手,我一直在努力了解如何从CSV文件中读取特定值。我的文件格式如下
08/11/2012 01:00:00,28/11/2012 01:00:00,29/11/2012 01:00:00,88,
08/11/2012 01:00:00,29/11/2012 01:00:00,30/11/2012 01:00:00,88,
08/11/2012 01:00:00,30/11/2012 01:00:00,01/12/2012 01:00:00,88,
08/11/2012 01:00:00,01/12/2012 01:00:00,02/12/2012 01:00:00,90.25,
08/11/2012 01:00:00,02/12/2012 01:00:00,03/12/2012 01:00:00,90.25,
我想阅读并将列表保存为字符串的最后一个值(即88 90.25
等)。我尝试了迄今为止我在这个论坛找到的所有内容,但它不适用于我的情况。
我想这样做,因为我想将此列表与另一个字符串列表进行比较,该列表从XML文件中获取此值,该文件是从我运行的另一个模型生成的。非常感谢你的帮助!
**此csv文件包含大约55000行以上格式。
答案 0 :(得分:4)
var values = File.ReadAllLines("").Select(x => x.Split(new char[] { ',' })[3]);
小编辑 - 拼写错误。使用此示例进行测试:
List<string> lines = new List<string>();
lines.Add("08/11/2012 01:00:00,28/11/2012 01:00:00,29/11/2012 01:00:00,88,");
lines.Add("08/11/2012 01:00:00,29/11/2012 01:00:00,30/11/2012 01:00:00,88,");
var values = lines.Select(x => x.Split(new char[] { ',' })[3]);
在列表中检索88,88。
答案 1 :(得分:0)
如果您的价值观是这样的,请不要包含&#34;,&#34;在它的价值观内:
TextReader tr1 = new StreamReader(CSVFileName, true);
var Data = tr1.ReadToEnd().Split('\n')
.Where(l => l.Length > 0) //nonempty strings
.Skip(1) // skip header if it has one
.Select(s => s.Trim()) // delete whitespace
.Select(l => l.Split(',')) // get arrays of values
.Select(l => new { Date_1 = l[0],
Date_2 = l[1],
Date_3 = l[2],
Val = l[3] });
然后您可以将此对象与foreach
或您喜欢的任何内容一起使用。
答案 2 :(得分:0)
double[] numbers = fileText.Split('\n').Select(x => double.Parse(x.Split(',')[3])).ToArray();
string numbersJoined = string.Join(" ", numbers);