2016-10-28 6 views
1

私はCSVファイルから姓名、およびSSNをプリントアウトしようとする試みで、このCSVリーダーを使用しています。これまでのところ私が持っていた列名は、それぞれのリスト/配列項目に含まれ(LINQ CSVリーダー)

static void Main(string[] args) 
{ 
     var query = File.ReadLines(@"C:\CSV\ToAdd.csv") 
         .SelectMany(line => line.Split(';')) 
         .Where(csvLine => !String.IsNullOrWhiteSpace(csvLine)) 
         .Select(csvLine => new { data = csvLine.Split(',') }) 
         .Select(s => new 
         { 
          Name = s.data[0], 
          Lastname = s.data[1], 
          SSN = s.data[2] 
         }); 

     foreach (var item in query) 
     { 
      Console.WriteLine(item); 
     } 
     Console.ReadKey(); 
} 

コードの一部は、それがそのようにプリントアウトされますので、それを作る代わりにプリントアウトされ
{ Name = Hej, Lastname = Hoj, SSN= 950505-1432 } 
{ Name = Huj, Lastname = Hij, SSN= 940304-1332 } 

レコードのみを:成功のビットが、問題は、それは同様に、列の名前をプリントアウトし続けています?

foreach (var item in query) 
{ 
    Console.WriteLine(item); 
} 

それは、コンパイラによって生成された匿名型の.NETで実装ToString()を使用しています:あなたはそれをこのように印刷

+0

に動作しますこの問題を反映しています - このlinqを印刷すると、匿名のオブジェクトが生成されました。 –

答えて

1

。実装は、プロパティ名+値の形式でデータを印刷することです。

  1. をあなたはこのようにそれを行うことができます(string.Formatのためだけの構文糖 である)C#6の文字列補間を使用して::

    あなたが代わりに行いたい印刷するときのために特定の形式を与えている

    foreach (var item in data) 
    { 
        Console.WriteLine("{0} {1}, {2}",item.Name, item.Lastname, item.SSN); 
    } 
    
    foreach (var item in query) 
    { 
        Console.WriteLine($"{item.Name} {item.Lastname}, {item.SSN}"); 
    } 
    
  2. Console.WriteLineの別のオーバーロードを使用して

    3.Orあなたが定義された型ではなく、匿名型に突き出ている場合は、オブジェクトのToStringを上書きすることができ、その後、質問からあなたのコードは、私はより良いに質問+タイトルを更新することをおすすめします

関連する問題