Я использую LINQ для запроса общего словаря, а затем использую результат как источник данных для своего ListView (WebForms).Как я могу конвертировать IEnumerable <T> в список <T> в C#?
упрощенный код:
Dictionary<Guid, Record> dict = GetAllRecords();
myListView.DataSource = dict.Values.Where(rec => rec.Name == "foo");
myListView.DataBind();
Я думал, что будет работать, но на самом деле он бросает System.InvalidOperationException:
ListView с идентификатором '' MyListView должен иметь источник данных, либо реализует ICollection или может выполнять подкачку источника данных, если AllowPaging - true.
Для того, чтобы заставить его работать, я должен был прибегнуть к следующему:
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();
Есть небольшой глюк в первом примере, чтобы заставить его работать?
(не был уверен, что использовать в качестве заголовка вопроса для этого, не стесняйтесь редактировать что-нибудь более подходящее)
Это обратная http://stackoverflow.com/questions/472669/c-freely-convert-between-listt-and-ienumerablet – John 2010-03-04 15:58:09