web-dev-qa-db-ja.com

リストからIEnumerable形式に変換します

IEnumerable<Book> _Book_IE
List<Book> _Book_List

_Book_ListIEnumerable形式に変換するにはどうすればよいですか?

82
What'sUP

変換する必要はありません。 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);
133
Darin Dimitrov

Assembly System.CoreおよびSystem.Linq名前空間で拡張メソッドAsEnumerableを使用できます。

List<Book> list = new List<Book>();
return list.AsEnumerable();

このMSDNリンク で述べたように、コンパイル時にリストのタイプを変更します。これにより、必要なコレクションのみを列挙することもできます(MSDNの例を参照してください)。

49
cdie

シングルライナーを使用しない理由...

IEnumerable<Book> _Book_IE= _Book_List as IEnumerable<Book>;
13
Rahul Chowdhury

私の知る限り、List<T>IEnumerable<T>を実装しています。つまり、変換したりキャストしたりする必要はありません。

11
Elalfer
IEnumerable<Book> _Book_IE;
List<Book> _Book_List;

ジェネリックバリアントの場合:

_Book_IE = _Book_List;

非ジェネリックに変換する場合:

IEnumerable ie = (IEnumerable)_Book_List;
3
Femaref

必要がある

using System.Linq;

IEnumerableListオプションを使用します。

0
Jury