0

我是 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 行具有上述格式的行。

4

3 回答 3

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。

于 2012-11-09T13:00:57.933 回答
0

如果您的价值观是这样的,并且在其价值观中不包括“,”:

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或任何你喜欢的东西。

于 2012-11-09T12:59:12.757 回答
0
double[] numbers = fileText.Split('\n').Select(x => double.Parse(x.Split(',')[3])).ToArray();
string numbersJoined = string.Join(" ", numbers);
于 2012-11-09T12:59:28.963 回答