Я использую LINQ для запроса общего словаря, а затем использую результат как источник данных для моего ListView (WebForms).
Упрощенный код:
Dictionary<Guid, Record> dict = GetAllRecords();
myListView.DataSource = dict.Values.Where(rec => rec.Name == "foo");
myListView.DataBind();
Я думал, что это сработает, но на самом деле оно выдает System.InvalidOperationException:
ListView с id 'myListView' должен имеют источник данных, который либо реализует ICollection или может выполнять подкачка источника данных, если AllowPaging правда.
Чтобы получить работу, мне пришлось прибегнуть к следующему:
Dictionary<Guid, Record> dict = GetAllRecords();
List<Record> searchResults = new List<Record>();
var matches = dict.Values.Where(rec => rec.Name == "foo");
foreach (Record rec in matches)
searchResults.Add(rec);
myListView.DataSource = searchResults;
myListView.DataBind();
Есть ли в первом примере небольшая ошибка, чтобы заставить ее работать?
(Не был уверен, что использовать в качестве названия вопроса для этого, не стесняйтесь редактировать что-то более подходящее)