2014-09-15 3 views
0

У меня есть CSV, который преобразуется в DataTable, используя этот код ..DataTable с Запрос Linq не работает должным образом

public static DataTable ConvertCSVtoDataTable(string strFilePath) 
    { 
     StreamReader sr = new StreamReader(strFilePath); 
     string[] headers = sr.ReadLine().Split(','); 
     DataTable dt = new DataTable(); 
     foreach (string header in headers) 
     { 
      dt.Columns.Add(header); 
     } 
     while (!sr.EndOfStream) 
     { 
      string[] rows = sr.ReadLine().Split(','); 
      DataRow dr = dt.NewRow(); 

      for (int i = 0; i < headers.Length; i++) 
      { 
       dr[i] = rows[i]; 
      } 
      dt.Rows.Add(dr); 
     } 
     return dt; 
    } 

, когда я пытаюсь запустить этот запрос

var query = from a in res.AsEnumerable() 
        where a.Field<string>("Last Name") == "Dickinson" 
        select a; 

     foreach (var b in query) 
      Console.WriteLine(b); 

все, что я получение возвращенное

System.Data.EnumerableRowCollection 1[System.Data.DataRow] System.Data.EnumerableRowCollection 1 [System.Data.DataRow] системы. Data.EnumerableRowCollection`1 [System.Data.DataRow]

Я посмотрел на SO и видел примеры, но я делаю что-то неправильно и не уверен, что.

+3

'Console.WriteLine (b);'? –

+0

Пробовал это, и он возвращается с System.Data.DataRow – Chris

ответ

1

Если вам нужны значения, которые вы должны цикл каждый столбец или использовать .ItemArray

foreach (var b in query) 
     Console.WriteLine(String.Join(",",b.ItemArray)); 

В основном строка содержит значение каждого столбца как словарь

Header: [colName1][colName2][colName3] 
Row1: val1  val2  val3 
Row2: val1  valX  val3 
Row3: val1  val2  val3 

, например

Console.WriteLine(row2["colName2"]); 

вернет valX

+0

Это сработало, и я буду принимать в качестве ответа, когда это разрешено. Можете ли вы объяснить, почему это нужно сделать таким образом? Поэтому я могу понять, почему – Chris

+0

Извините, не заметил ссылки на него. – Chris

+1

@ Chris Хорошо, во всяком случае я добавил общее объяснение логики DataRow – Sam

Смежные вопросы