DataSource for Entity Framework for WinForms
LiveLinq でコレクションをクエリーする方法
C1LiveLinq > LiveLinq の使用方法 > LiveLinq でコレクションをクエリーする方法

Visual Studio で LiveLinq を使用するには、最初に、LiveLinq アセンブリ C1.LiveLinq.dll をプロジェクトの参照に追加します。次に、コード内で LiveLinq を利用するための using ディレクティブをソースファイルに追加します。

C#
コードのコピー
using C1.LiveLinq;
using C1.LiveLinq.Indexing;
using C1.LiveLinq.Collections;

 

(常にこれらすべてが必要になるわけではありませんが、ここで一度にまとめて記述した方が簡単です。)

LiveLinq でコレクションにクエリーを実行するには、コレクションをインタフェース IIndexedSource<T> でラップして、LiveLinq に引き継ぎを指示する必要があります。そうしないと、標準の LINQ が使用されます。このラップは、たとえば、拡張メソッド AsIndexed の呼び出しで実行されます。

C#
コードのコピー
from c in source.AsIndexed() where c.p == 1 select source

 

ただし、すべてのコレクションをこの方法でラップできるわけではありません。たとえば、List<T> ソースでこれを行うと、コンパイルエラーになります。LiveLinq でコレクションを使用するには、そのコレクションが変更通知をサポートしている必要があります。つまり、LiveLinq オブジェクトに変更が行われたり、コレクションにオブジェクトが追加または削除されたときに、それを LiveLinq に通知する必要があります。データ連結に使用されるコレクション、つまり IBindingList(WinForms データ連結)または INotifyCollectionChanged/INotifyPropertyChanged(WPF データ連結)を実装するコレクションは、この要件を満たしています。

特に、AsIndexed() は、ADO.NET コレクション(DataTableDataView)および LINQ to XML コレクションに適用できます。

関連トピック