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 に答える