C#:コレクション型の比較
※2015/07チーム内で共有するためにまとめた内容。
IEnumerable
- 全ての始まり(以下全てのインタフェースの親に当てはまる)。
- foreachはIEnumerableインターフェースを実装しているクラスしか処理することができません。
- 特定のアイテムを取得することは出来ない。(ex)0~4までのアイテムがある場合、0~3を通さず4を取得できない)
- 読み取り専用。追加と削除が出来ない。
- DBサーバーから取得した値からクエリーを処理する。DBContextで直接利用する場合、メモリーの問題が発生する恐れがある。
IQueryable
- クエリーは.ToList()もしくはforeachで反復処理を行うまで実行されない。
- DBサーバーで実行されるクエリーを生成して値を処理する。
- Ienumerableを継承している。
IEnumerableとIQueryableの比較
- IQueryableはIEnumerableを継承している。
- IEnumerableはDBサーバーから取得した値からクエリーを処理する。DBContextで直接利用する場合、メモリーの問題が発生する恐れがある。
- IQueryableはDBサーバーで実行されるクエリーを生成して値を処理する。
ICollection
- IEnumerableとIListの間に位置している。
- IEnumerableを継承している。
- 追加、削除処理と数の取得が可能。(Add(), Remove(), Count)
IList
- アイテムの追加、削除、修正が可能。
- 特定アイテムの取得が可能。
- IEnumerableとICollectionを継承している。