IEnumerable<Book> _Book_IE
List<Book> _Book_List
_Book_List
をIEnumerable
形式に変換するにはどうすればよいですか?
変換する必要はありません。 List<T>
IEnumerable<T>
インターフェースを実装しているため、すでに列挙可能です。
これは、次のものを持っていることはまったく問題ないことを意味します。
public IEnumerable<Book> GetBooks()
{
List<Book> books = FetchEmFromSomewhere();
return books;
}
と同様:
public void ProcessBooks(IEnumerable<Book> books)
{
// do something with those books
}
呼び出すことができます:
List<Book> books = FetchEmFromSomewhere();
ProcessBooks(books);
Assembly System.CoreおよびSystem.Linq名前空間で拡張メソッドAsEnumerableを使用できます。
List<Book> list = new List<Book>();
return list.AsEnumerable();
このMSDNリンク で述べたように、コンパイル時にリストのタイプを変更します。これにより、必要なコレクションのみを列挙することもできます(MSDNの例を参照してください)。
シングルライナーを使用しない理由...
IEnumerable<Book> _Book_IE= _Book_List as IEnumerable<Book>;
私の知る限り、List<T>
はIEnumerable<T>
を実装しています。つまり、変換したりキャストしたりする必要はありません。
IEnumerable<Book> _Book_IE;
List<Book> _Book_List;
ジェネリックバリアントの場合:
_Book_IE = _Book_List;
非ジェネリックに変換する場合:
IEnumerable ie = (IEnumerable)_Book_List;
必要がある
using System.Linq;
IEnumerable
でList
オプションを使用します。