【发布时间】:2011-09-10 19:55:43
【问题描述】:
编辑:我注意到当我绑定到字典时会发生这种情况,这是我在原始帖子中遗漏的内容;我已经更新了帖子。
如果我将 BindingSource 的数据源设置为从字典中提取的后期评估 LINQ 查询,它似乎可以正常工作,除了一件事:当结果为空时。当查询不返回任何内容时,DataGridView 最终会绑定到空的 KeyCollection 或 ValueCollection 本身,就好像它是一个数据项一样。这会导致 DataGridView 中出现一个空白行。
似乎 BindingSource 旨在识别空 List 是具有零项的数据源,但不识别空的 KeyCollection 或 ValueCollection 是具有零项的数据源,而是认为它是具有一项的数据源(空集合)。
这是否与 Dictionary 实现(或不实现)的接口有关?
例如:
...
private readonly Dictionary<Record> mRecords = new Dictionary<Record>();
...
private IEnumerable<Record> GetDataSource()
{
return mRecords.Values.OrderBy(x => x.Amount);
}
...
mBindingSource.DataSource = GetDataSource();
...
我当然可以通过使用 ToList() 来解决这个问题,但是我失去了惰性求值。
非常感谢
【问题讨论】:
标签: c# linq .net-4.0 datagridview bindingsource