IT業界のすみっこ暮らし

ふと気がついたときの記録

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を継承している。


プライバシーポリシー