LiveLinq による汎用コレクションクラスに対するクエリーは LiveLinq to Objects と呼ばれ、データセットや XML などの特定のデータソースをクエリーする LiveLinq to DataSet や LiveLinq to XML とは区別されます。このため、データセット内のデータをクエリーする場合は LiveLinq to DataSet を、XML データをクエリーする場合は LiveLinq to XML を使用してください。その他の場合については、LiveLinq to Objects の2つのオプションについて既に説明しました。
- 既存のコレクションクラスがなく、LiveLinq に依存してコレクションクラスを提供する場合は、IndexedCollection<T> を使用します。
- データ連結をサポートしている既存のコレクションクラスには、ToIndexed() を適用します。
また、頻繁には必要とされない高度なオプションもあります。
- 非標準の機能が必要な場合は、独自のコレクションクラス(通常は IndexedCollection<T> から派生)を定義します。
最後に、高度なオプションと見なすこともできる一方で、実際にはそれほど雑しくはないオプションもあります。このオプションを使用すると、ほぼすべてのコレクションに LiveLinq を適用することができます。
- 変更が発生したことを何らかの方法で通知できるなら、任意の既存のコレクションクラス C を LiveLinq で使用可能にすることができます。次に、C1.LiveLinq.IObservableSource<T> インタフェースを実装し、ほとんどの機能を既存のコレクションクラスに委ねるアダプタクラスを作成します。IObservableSource<T> を実装することで、アダプタクラスに ToIndexed() 拡張メソッドを適用することができます。このメソッドは IIndexedSource<T> を返します。クエリー演算子を実装する LiveLinq の拡張メソッドは、引数として IIndexedSource<T> を受け取ります(IndexedQueryExtensions を参照)。