Как связать средство просмотра отчетов со словарем <string, int> в качестве источника данных? - PullRequest
0 голосов
/ 16 декабря 2011

У меня есть список пар имя-значение, которые я хочу разместить в хорошем формате отчета. Можно ли использовать это как источник данных для объекта ReportViewer? Это в WinForms и ASP.

Ответы [ 4 ]

3 голосов
/ 16 декабря 2011

Мне удалось преобразовать Словарь в DataTable и использовать его в качестве источника данных.

var table = new DataTable();
var kvps = dictionary.ToArray();
table.Columns.AddRange(kvps.Select(kvp => new DataColumn(kvp.Name)).ToArray());
table.LoadDataRow(kvps.Select(kvp => kvp.Value).ToArray(), true);
bindingSource.DataSource = table;

Вуаля

0 голосов
/ 16 декабря 2011

Я не думаю, что это не будет естественно связываться в ReportViewer.Просто поместите их в список пользовательских объектов со свойствами, с которыми вы хотите связать.Это не было бы много накладных расходов (как список.

0 голосов
/ 16 декабря 2011

Словари не подходят в качестве источника данных для списков. Они оптимизированы для получения значений для заданных ключей. Тем не менее, вы можете извлечь ключи, значения и пары ключ / значение из словаря следующим образом:

var keys = dict.Keys;
var values = dict.Values;
var keyValuePairs = dict.OrderBy(x => x.Value);
foreach (KeyValuePair<string, int> item in keyValuePairs) {
    Console.WriteLine("Key = {0}, Value = {1}", item.Key, item.Value);
}
0 голосов
/ 16 декабря 2011

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

Код находится в VB.NET, но вы сможете следовать ему довольнолегко.

...