#c# #datatable
#c# #таблица данных
Вопрос:
Я хочу определить таблицу данных со столбцами, где определение столбца является частью оператора определения datatable.
Например
//valid syntax
DataTable dt = new DataTable();
dt.Columns.add("num",typeof(int));
dt.Columns.add("num2",typeof(int));
Но я бы предпочел сделать что-то вроде
//invalid syntax
DataTable dt = new DataTable(Data.Columns[] {
{"num",typeof(int)},
{"num2",typeof(int)}
};
Возможно ли это?
Если это так, каков правильный синтаксис.
Комментарии:
1. Вы должны написать это самостоятельно. Это достаточно просто с помощью статического метода, который возвращает вашу новую таблицу данных, или вы можете использовать шаблон декоратора.
Ответ №1:
Вы не можете инициализировать таблицу данных с помощью инициализатора коллекции. Все, что вы можете использовать, это AddRange
метод DataColumnCollection
, но я не думаю, что он намного лучше вашего первоначального подхода
DataTable dt = new DataTable();
dt.Columns.AddRange(new[] {
new DataColumn("num", typeof(int)),
new DataColumn("num2", typeof(int))
});
Вы можете создать метод расширения, который будет добавлять столбцы плавным способом:
public static DataTable AddColumn<T>(this DataTable dt, string name)
{
dt.Columns.Add(name, typeof(T));
return dt;
}
Использование:
var dt = new DataTable()
.AddColumn<int>("num")
.AddColumn<int>("num2");