如何将报表查看器与字典作为数据源

本文关键字:int string 数据源 字典 报表 | 更新日期: 2023-09-27 18:18:17

我有一个名称-值对列表,我想把它放在一个漂亮的报告格式中。是否可以将其用作ReportViewer对象的数据源?

如何将报表查看器与字典<string,int>作为数据源

我能够将Dictionary转换为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;

我认为您必须创建一个类来封装您想要在报告中显示的项。关于如何将类绑定到报表,请参阅我对这个问题的回答。

代码是在VB。但是你可以很容易地跟上它

我认为这不会在ReportViewer中自然绑定。只需将它们放入具有要绑定到的属性的自定义对象列表中。它不会有太多的开销(像List.

)。

字典不适合作为列表的数据源。它们针对检索给定键的值进行了优化。不过,您可以从字典中检索键、值和键/值对,如下所示:

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);
}