Словари в DataTable - PullRequest
       24

Словари в DataTable

2 голосов
/ 02 декабря 2009

Скажите, у меня есть 3 Dictionary<string, string> объектов. Все 3 имеют один и тот же ключ, например:

Dic1   Dic2   Dic3
K  V   K  V   K  V
A  s   A  z   A  i
B  d   B  e   B  u
C  a   C  r   C  o
D  w   D  t   D  p

Теперь я хотел бы объединить эти словари в один DataTable, DataTable должен выглядеть следующим образом:

A s z i
B d e u
C a r o
D w t p

Есть ли какие-нибудь указатели или идеи о том, как перейти от отдельных словарей к комбинированным в DataTable?

Ответы [ 2 ]

9 голосов
/ 02 декабря 2009
var dic1 = new Dictionary<string, string>() 
{ 
    { "A", "s" },
    { "B", "d" },
    { "C", "a" },
    { "D", "w" },
};

var dic2 = new Dictionary<string, string>() 
{ 
    { "A", "z" },
    { "B", "e" },
    { "C", "r" },
    { "D", "t" },
};

var dic3 = new Dictionary<string, string>() 
{ 
    { "A", "i" },
    { "B", "o" },
    { "C", "u" },
    { "D", "p" },
};

var table = new DataTable();
table.Columns.Add("K", typeof(string));
table.Columns.Add("c1", typeof(string));
table.Columns.Add("c2", typeof(string));
table.Columns.Add("c3", typeof(string));
foreach (var key in dic1.Keys)
{
    table.Rows.Add(key, dic1[key], dic2[key], dic3[key]);
}
0 голосов
/ 02 декабря 2009

Предполагается, что экземпляр DataTable создан и столбцы добавлены

foreach (string k in Dic1.Keys)
{
    DataRow row = table.NewRow();
    row[0] = k;
    row[1] = Dic1[k];
    if (Dic2.ContainsKey(k))
        row[2] = Dic2[k];
    if (Dic3.ContainsKey(k))
        row[3] = Dic3[k];

    table.Rows.Add(row);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...