Tôi đang sử dụng LINQ để truy vấn từ điển chung và sau đó sử dụng kết quả làm nguồn dữ liệu cho ListView của tôi (WebForms).Làm cách nào tôi có thể chuyển đổi IEnumerable <T> thành Danh sách <T> trong C#?
đang Giản:
Dictionary<Guid, Record> dict = GetAllRecords();
myListView.DataSource = dict.Values.Where(rec => rec.Name == "foo");
myListView.DataBind();
Tôi nghĩ rằng sẽ làm việc nhưng trên thực tế nó ném một System.InvalidOperationException:
ListView với id 'myListView' phải có một nguồn dữ liệu mà hoặc triển khai ICollection hoặc có thể thực hiện phân trang nguồn dữ liệu nếu AllowPaging là true.
Để làm cho nó làm việc tôi đã phải dùng đến những điều sau:
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();
Có một Gotcha nhỏ trong ví dụ đầu tiên để làm cho nó hoạt động?
(Chẳng phải chắc chắn những gì để sử dụng như tiêu đề câu hỏi cho thế này, cảm thấy tự do để chỉnh sửa một cái gì đó thích hợp hơn)
Đây là sự đảo ngược của http://stackoverflow.com/questions/472669/c-freely-convert-between-listt-and-ienumerablet – John