2017-01-22 12 views
0

提供されたCSVテキストをCSVHelperのリストに読み込もうとしていますが、一部のレコードをスキップしています。Csvhelperが正しく構文解析されない

私の問題をより明確にするために、赤の下の画像にレコードを作成しましたが、その赤いフィールド(合計52個)だけがリストに追加されますが、その後にカンマ区切りのテキストは追加されません。例:488273,1482 、14526113。最初のものを追加しますが、1482と14526113はスキップします。追加したものも必要です。

コード

csv.Configuration.HasHeaderRecord = false; 
csv.Configuration.TrimFields = false; 

List<int> playerInfo = csv.GetRecords<int>().ToList(); 

画像

赤いマーキングがないだけexamleを与えるするしかものであり、それはすべての最初のレコードについてです。指定したタイプにcsv.GetRecords<T>() CSVHelperマップの全体各行(ライン)を呼び出す

CSV

答えて

0
using System; 
using System.Collections.Generic; 
using System.IO; 
using CsvHelper; 

namespace stack1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      //list of int 
      var result = new List<int>(); 
      //total 
      int sum=0; 
      int recordValue; 
      using (TextReader fileReader = File.OpenText(@"C:\sample.csv")) 
      { 
       var csv = new CsvReader(fileReader); 
       csv.Configuration.HasHeaderRecord = false; 
       csv.Configuration.TrimFields = false; 

       while (csv.Read()) 
       { 
        for (var i = 0; csv.TryGetField(i, out recordValue); i++) 
        { 
         result.Add(recordValue); 
         sum += recordValue; 
        } 
       } 
      } 
      Console.WriteLine(sum); 
      Console.ReadLine(); 
     } 
    } 
} 
+0

これは私のための解決策ではありません – iub3rskillz

+0

そのCSVファイルから正確に何をしたいですか? – Anbazhagan

+0

コンマ(、)の後ろに最後の2つのレコードがありません。例:487207,1484,15047920。それらからは487207がリストに追加されます。しかし、私も1484と15047920がリストに追加されている必要があります。 getRecordsは正しく動作しません。 – iub3rskillz

0

。タイプintにマッピングしています。 CSVの各行には3つの値があります。これらの3つの値は、単一のintにマッピングすることはできません。 CSVHelperは各行の最初のレコードを単にマップします。

CsvReaderを使用する場合は、カスタムクラス(3つのintプロパティ)を定義し、csv.GetRecords<MyCustomCsvClass>()を使用する必要があります。またカスタムCsvClassMapを作成する必要があるかもしれません。 CSVHelperのドキュメントは優れています:Mapping By Index

また、CsvParser classを使用して、マッピングや型変換を行わなくてもかまいません。各行に対して単にstring[]を返します。

関連する問題