Заполнить столбцы с датами с пользовательскими типами - PullRequest
0 голосов
/ 01 ноября 2010

Я хотел бы определить класс, производный от System.Data.DataTable.
В этом классе есть метод PopulateColumns, который, как вы можете догадаться, заполняет DataTable.Я хочу, чтобы этот метод мог динамически заполнять столбцы данных с любым числом пользовательских типов данных.(См. Мой код ниже для пояснения) Я попытался использовать Dictionary<strin,Type> вместо передачи всех параметров один за другим:

public void Populate(Dictionary<string, Type> dic)
   {
       foreach (var item in dic)
           this.Columns.Add(item.Key, item.Value);
   }  

и назвать его:

var testDt = new TestDataTable();
Dictionary<string, Type> dicCols = new Dictionary<string, Type>();
dicCols.Add("Index", System.Type.GetType("System.Int32"));
dicCols.Add("Title", System.Type.GetType("System.String"));
testDt.Populate(dicCols);  

Это работает нормально,но он не может принимать два столбца с одинаковыми значениями (поскольку имена столбцов являются ключами в словаре).
Я знаю, что мне не нужно передавать два столбца с одинаковыми именами.Но мне просто любопытно, есть ли лучший способ сделать это.

1 Ответ

2 голосов
/ 02 ноября 2010

Это проще, чем вы думаете:

    testDt.Columns.AddRange(new[] 
    {
        new DataColumn("Index", typeof(int)),
        new DataColumn("Title", typeof(string)),
    });

Или вы можете заранее составить список:

    var columns = new[] 
    {
        new DataColumn("Index", typeof(int)),
        new DataColumn("Title", typeof(string)),
    };

    testDt.Columns.AddRange(columns);

(Массивы, коллекции и т. Д. Имеют член AddRange().)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...