Я использую LINQ для запроса универсального словаря, а затем использую результат в качестве источника данных для моего ListView (WebForms).
Упрощенный код:
Dictionary<Guid, Record> dict = GetAllRecords();
myListView.DataSource = dict.Values.Where(rec => rec.Name == "foo");
myListView.DataBind();
Я думал, что это сработает, но на самом деле он выдает System.InvalidOperationException :
ListView с идентификатором '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();
Есть ли маленькая ошибка в первом примере, чтобы она работала?
(Не был уверен, что использовать в качестве названия вопроса для этого, не стесняйтесь редактировать что-то более подходящее)