DataSource for Entity Framework for WinForms
ライブビューの作成方法
C1LiveLinq > LiveLinq の使用方法 > ライブビューの作成方法

単純なクエリーを考えてみます。

C#
コードのコピー
from a in A where a.p == 1 select a

標準の LINQ では、このクエリーの結果はスナップショットです。結果のコレクションは、クエリーの実行時に形成され、それ以降は変更されません。オブジェクトの1つが変更され、条件を満足しなくなっても、そのオブジェクトは結果のコレクションから削除されません。また、A 内のオブジェクトが変更され、条件を満足するようになっても、そのオブジェクトは結果のコレクションに追加されません。このような単純なクエリーの結果でさえ、ライブではなく、動的ではありません。基本コレクション A が変化したときに自動的に変化せず、ベースデータと自動的に同期されません。

LiveLinq では、このクエリーに基づいてビューを作成すると、それはライブで動的になります。ベースデータが変化したときに自動的に変化し、ベースデータと自動的に同期されます。

このクエリーからビューを作成するために必要な作業は、拡張メソッド .AsLive() を使用することだけです。

C#
コードのコピー
var view = from a in A.AsLive() where a.p == 1 select a;

AsLive() 拡張メソッドは、AsIndexed()/ToIndexed() に似ており、AsIndexed()/ToIndexed() 拡張メソッドを使用できる場所ならどこでも使用できます。したがって、ライブビューは、LiveLinq to Objects、LiveLinq to XML、LiveLinq to DataSet のすべてのケースでサポートされます(サポートされるクエリー演算子には多少の制限があります。「Live Views でサポートされるクエリー演算子」を参照)。AsIndexed()/ToIndexed()AsLive() の違いは、AsLive() がビューを作成することです。したがって、AsLive() の場合は、LiveLinq を使用して、クエリーからビューにデータを挿入することも、初期データを挿入した後のビューを管理することもできます。AsIndexed()/ToIndexed() 拡張メソッドは、その前半部分だけを実行し、LiveLinq によるクエリーが有効になります。

上の例は、1つの簡単な Where 条件を示す非常に単純なクエリーです。たとえば、ADO.NET の DataView または WPF の CollectionView など、ほかにも同様のことを実行できるツールがあります。LiveLinq の威力は、結合を含む大部分の LINQ 演算子をサポートすることにあります。したがって、単純な条件だけでなく、事実上、必要なすべてのクエリーに基づいてライブビューを作成できます。