2013-04-14 3 views
-1

Мне нужно преобразовать массив массивов типа List<string>[] в Datatable in C#.C# Список <string> [] to Datatable

Я нашел много тем, связанных с List<string[]> to Datatable conversion, но ничего не требуется для преобразования.

псевдокод:

//Retrieve data from MySQL server 
db.Select(category, productID); 
//populate List<string>[] array 
list[0] = db.ListQuery[0]; 
list[1] = db.ListQuery[1]; 

//convert list[] to Datatable 
..... 

Любая помощь очень ценится.

+0

Что такое "преобразование" правила? Кроме того, вы не хотите конверсии. Вы хотите заполнить «DataTable» данными из «Список ». – Dennis

+0

@ Dennis'list [] 'отличается от «всего» '. Я упомянул об этом над заголовком и смело его ... В любом случае, я решаю проблему, используя «MySQLDataAdapter» вместо «MySQLDataReader» и непосредственно заполняя таблицу. – Alex

ответ

1

Если я правильно понимаю ваш вопрос, вы имеете в виду что-то вроде этого?

string category = "Category"; 
string productId = "ProductId"; 
List<string[]> tempList = db.Select(category, productID); //Not necessarily correct (I'm not familiar with MySQL). Do what you need to do to create the List<string[]> 
DataTable table = new DataTable(); 
DataRow row; 
table.Columns.Add(category); 
table.Columns.Add(productId); 
foreach (string[] s in tempList) 
{ 
    row = table.NewRow(); 
    row[category] = s[0]; 
    row[productId] = s[1]; 
    table.Rows.Add(row); 
} 
-1
DataTable dataTable = new DataTable(); 
      List<MemberInfo> props = typeof(T).GetFields().Select(objField => (MemberInfo)objField).ToList(); 
      props.AddRange(typeof(T).GetProperties().Select(objField => (MemberInfo)objField)); 

      if (props.Count > 0) 
      { 
       Type t; 
       bool tIsField = false; 
       for (int iCnt = 0; iCnt < props.Count; iCnt++) 
       { 
        var prop = props[iCnt]; 
        tIsField = prop.MemberType == MemberTypes.Field; 
        dataTable.Columns.Add(prop.Name, tIsField ? ((FieldInfo)prop).FieldType : ((PropertyInfo)prop).PropertyType); 
       } 
       foreach (T item in data) 
       { 
        DataRow dr = dataTable.NewRow(); 

        foreach (var field in props) 
        { 
         tIsField = field.MemberType == MemberTypes.Field; 
         object value = tIsField ? ((FieldInfo)field).GetValue(item) : ((PropertyInfo)field).GetValue(item, null); 
         dr[field.Name] = value; 
        } 
        dataTable.Rows.Add(dr); 
       } 
      } 
      return dataTable;