Używam LINQ do wysyłania zapytań do ogólnego słownika, a następnie używam wyniku jako źródła danych dla mojego ListView (WebForms).Jak przekonwertować IEnumerable <T> na listę <T> w języku C#?
kod uproszczony:
Dictionary<Guid, Record> dict = GetAllRecords();
myListView.DataSource = dict.Values.Where(rec => rec.Name == "foo");
myListView.DataBind();
Myślałem, że będzie działać, ale w rzeczywistości to rzuca System.InvalidOperationException:
ListView z 'id' myListView musi mieć źródło danych, które albo implementuje ICollection lub może wykonać stronicowanie źródła danych , jeśli AllowPaging ma wartość true.
Aby dostać pracy musiałem uciekać się do następujących:
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();
Czy istnieje małe haczyka w pierwszym przykładzie, aby to działało?
(nie byłem pewien, co do wykorzystania jako tytuł zapytania dla tego jednego, nie krępuj się zmieniać na coś bardziej odpowiedniego)
Jest to odwrotność http://stackoverflow.com/questions/472669/c-freely-convert-between-listt-and-ienumerablet – John