Estoy usando LINQ para consultar un diccionario genérico y luego uso el resultado como el origen de datos para mi ListView (WebForms).¿Cómo puedo convertir IEnumerable <T> en la lista <T> en C#?
código simplificado:
Dictionary<Guid, Record> dict = GetAllRecords();
myListView.DataSource = dict.Values.Where(rec => rec.Name == "foo");
myListView.DataBind();
pensé que iba a funcionar, pero en realidad se lanza una System.InvalidOperationException:
ListView con id 'MyListView' debe tener un origen de datos que implementa ICollection o puede realizar la búsqueda de fuente de datos si AllowPaging es true.
Con el fin de conseguir que funcione he tenido que recurrir a lo siguiente:
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();
¿Hay un pequeño Gotcha en el primer ejemplo de hacer que funcione?
(no estaba segura de lo que va a utilizar como título de la pregunta para éste, se siente libre de editar a algo más apropiado)
Este es el reverso de http://stackoverflow.com/questions/472669/c-freely-convert-between-listt-and-ienumerablet – John