2013-06-04 2 views
1

Мне нужно добавить столбцы в существующую структуру данных, читая данные в первой строке существующего datatable. Затем необходимо добавить данные в новые столбцы из текстового файла. Для примера, пожалуйста, рассмотрите таблицу, приведенную ниже, как существующий тип данных. И я уже упоминали значения в первой строке здесь (DM1, дм2, ..)Добавить новые столбцы в datatable, читая данные строки

Image 1

И приводится ниже является DataTable, который я требуется. dm4 данные строк и dm6 строки данные были добавлены два новых столбцов здесь

Image 2

Может кто-то пожалуйста, помогите мне, чтобы определить решение. Заранее спасибо

private DataTable CreateDT1(string name, ListBox list) 
    {    
     DataTable dt = new DataTable();   
     //there are many files in the list box 
     string[] files = new string[list.Items.Count]; 
     for (int x = 0; x < list.Items.Count; x++) 
     { 
      object s = list.Items[x]; 
      files[x] = s.ToString(); 
     } 

     int lineno = 0; 
      //for each file in list box 
      for (int i = 0; i < files.Length; i++) 
      { 
       int count = 0; 
       string file = files[i]; 
       using (System.IO.StreamReader sr = new System.IO.StreamReader(file)) 
       {       
        string line;       

        while ((line = sr.ReadLine()) != null) 
        {       
         if (line.Contains(name))//filtering the line which contains a specific string" 
         {         

          if (i == 0) 
          {          
           if (lineno == 0)//first choosen line of the first text file. 
           { 
            //splitting the choosen line 
            string[] split = line.Split(','); 

            int result = split.Length; 
            dt.Rows.Add(); 
            //Based on the number of split length of this row i have added columns 
            for (int x = 0; x < result; x++) 
            { 
             DataColumn dc = new DataColumn(x.ToString(), Type.GetType("System.String")); 
             dt.Columns.Add(dc);            
             dt.Rows[lineno][x+1] = split[x]; 
            } 

           } 
           else//splitting and adding other lines of the first text file 
           { 
            string[] split = line.Split(','); 
            int result = split.Length; 

             dt.Rows.Add(); 
             for (int x = 0; x < result; x++) 
             { 
              dt.Rows[lineno][x + 1] = split[x]; 
             }                     

           }          
          } 

          else//adding lines of other text files underneath the same columns 
          {          
           if (count != 0) 
           { 
            string[] split = line.Split(','); 
            int result = split.Length; 
            if (result+1 <= dt.Columns.Count) 
            { 
             dt.Rows.Add(); 
             for (int x = 0; x < result; x++) 
             { 
              dt.Rows[lineno][x + 1] = split[x]; 
             } 

            } 
            else//My issue occurs here when there are additional columns in the other files. Basically when the split length of a line is higher than the previous text files. Then i have to add a new column at the specific positions 
            {            

             dt.Rows.Add(); 
             for (int x = 0; x < result; x++) 
             { 
              if (split[x]!=dt.Rows[0][x+1]) 
              { 
              DataColumn dc = new DataColumn(split[x], Type.GetType("System.String")); 
              dt.Columns.Add(dc); 
              dt.Rows[lineno][x + 1] = split[x]; 
              } 
             } 

            } 

           } 

           else 
           {           
            lineno -= 1; 
            count += 1;           
           } 

           }         

          lineno += 1;         
         } 

        } 

       } 

      }    

     return dt; 
} 
+0

Итак, как относится текстовый файл и связанный с ним datatable? Первая строка в таблице относится к первой строке в текстовом файле? –

+0

http://stackoverflow.com/questions/2312966/add-new-column-and-data-to-datatable-that-already-contains-data-c-sharp?rq=1 –

+0

@Schmelter Да, первая строка - это первая строка в текстовом файле –

ответ

-1

Если изменить запрос SQL для SELECT, DM1, дм2, дм3, NULL AS DM4, DM5, NULL, как dm6, Dm7 вы получите некоторые значения заполнения в пропуски вы можете использовать сразу

+0

Он не упомянул, что он использует базу данных вообще. В целом этот ответ не помогает присоединиться к столбцам из разных источников данных, поэтому -1. –

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