2012-01-03 2 views
3

Я пытаюсь установить первую строку DataTable как имена столбцов. Я использую GenericParsing library из проекта кода. Проблема состоит в том, что анализатор задает имя столбца по умолчанию.Создание первой строки в DataTable имя столбца

Спасибо.

+0

Можете ли вы дать ссылку на библиотеку разбора? –

+0

Почему вы хотите задать первую строку как имена столбцов? В этих библиотечных классах должно быть некоторое свойство, которое позволит вам указать имена столбцов и переопределить значения по умолчанию. –

+0

@Jason Down: Я нашел его здесь http://www.codeproject.com/KB/database/GenericParser.aspx - это действительно хороший проект :) – cyberbrain

ответ

6

Это должно делать то, что вы хотите:

DataRow firstRow = table.NewRow(); 
List<string> names = new List<string>(); 
foreach (DataColumn column in table.Columns) 
{ 
    names.Add(column.ColumnName); 
} 
firstRow.ItemArray = names.ToArray(); 
table.Rows.InsertAt(firstRow, 0); 

Если первая строка уже существует, и вы хотите, чтобы «переписать» это изменить первую строку на:

DataRow firstRow = table.Rows[0]; 

И удалить последнюю строку ,

+0

Эти строки создают новую строку, заполненную именами столбцов ...! но то, что я хотел, на самом деле наоборот ... изменение имени фактических столбцов путем импорта значений из первой строки ...! я могу использовать фиктивный контур, но я был уверен, что у вас есть что-то более элегантное для меня :) ... спасибо – cyberbrain

8

Я думаю, вам нужно следующее:

foreach (DataColumn column in table.Columns) 
{ 
    string cName = table.Rows[0][column.ColumnName].ToString(); 
    if (!table.Columns.Contains(cName) && cName != "") 
    { 
     column.ColumnName = cName; 
    } 

} 

table.Rows[0].Delete(); //If you don't need that row any more 
+0

Конечно, добавьте data.Rows [0] .Delete(), если вам больше не нужна эта строка :) –

+0

You уже проверять 'cName! =" "' один раз, второй раз бессмысленно, вы можете безопасно изменить 'column.ColumnName = cName;' –

0

привет надеется, что это поможет U это будет делать все подряд, как вы заголовок столбца

foreach (DataRow inRow in inputTable.Rows) 
    { 
     string newColName = inRow[0].ToString(); 
     outputTable.Columns.Add(newColName); 
    } 
Смежные вопросы