IEnumerable<Book> _Book_IE
List<Book> _Book_List
Jak mam zrobić w celu przekształcenia _Book_List
do formatu IEnumerable
?Konwersja z listy w formacie IEnumerable
IEnumerable<Book> _Book_IE
List<Book> _Book_List
Jak mam zrobić w celu przekształcenia _Book_List
do formatu IEnumerable
?Konwersja z listy w formacie IEnumerable
Nie trzeba konwertować. List<T>
implementuje interfejs IEnumerable<T>
, więc jest już przeliczalny.
To oznacza, że można perfekcyjnie posiadać:
public IEnumerable<Book> GetBooks()
{
List<Book> books = FetchEmFromSomewhere();
return books;
}
, jak:
public void ProcessBooks(IEnumerable<Book> books)
{
// do something with those books
}
które mogą być powoływane:
List<Book> books = FetchEmFromSomewhere();
ProcessBooks(books);
IEnumerable<Book> _Book_IE;
List<Book> _Book_List;
Jeśli jest to ogólny wariant:
_Book_IE = _Book_List;
Jeśli chcesz przekonwertować do non-generic jednym:
IEnumerable ie = (IEnumerable)_Book_List;
Nie potrzebujesz tutaj obsady. –
Robisz, jeśli chcesz zastosować określone metody z interfejsu niebędącego generycznym, ponieważ niektóre z nich są jawnie zaimplementowane lub czy jestem tutaj na niewłaściwej ścieżce? – Femaref
O ile wiem List<T>
realizuje IEnumerable<T>
. Oznacza to, że nie musisz niczego konwertować ani rzucać.
To zależy. Jeśli spróbujesz ustawić "IEnumerable
Dlaczego nie korzystać z jednego wykładziny ...
IEnumerable<Book> _Book_IE= _Book_List as IEnumerable<Book>;
Można użyć metody rozszerzenie AsEnumerable w montażu System.Core i System.Linq nazw:
List<Book> list = new List<Book>();
return list.AsEnumerable();
będzie to, jak powiedział na this MSDN link zmienić typ listy podczas kompilacji. Daje to korzyści, aby wyliczyć tylko potrzebną kolekcję (patrz przykład MSDN).
Wygląda prosto, ale jest najprostszym sposobem na konwersję. Dziękuję Ci –
Trzeba
using System.Linq;
używać IEnumerable
opcje w swojej List
.
Konwencja nazewnictwa jest niefortunnie wyjątkowa. –
Przynajmniej ma konwencję, co? – Femaref