Создание столбцов в таблице данных с помощью одного выражения

#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");