LiveLinq は、メモリ内の XML(LINQ to XML XDocument クラスに格納)から直接データにクエリーを実行できます。XML インデックス(通常の LINQ to XML ではサポートされない)をサポートすることで、LINQ to XML のパフォーマンスが劇的に向上します。
LiveLinq to XML を使用するには、次のステートメントをソースファイルに追加する必要があります。
C# |
コードのコピー
|
---|---|
using C1.LiveLinq.LiveViews.Xml;
|
次に、XML データの上にライブビューをいくつか作成する必要があります。ライブビューなしでデータにクエリーを実行できる LiveLinq to Objects や LiveLinq to DataSet とは異なり、LiveLinq to XML では、クエリーとライブビューが常に一緒に使用されます。ライブビューに適用する場合は、LiveLinq to XML バージョンの LINQ クエリー演算子を使用することになります。そうでない場合、それらは標準の非 LiveLinq クエリー演算子になります。ライブビューの作成を開始するには、拡張メソッド AsLive() を XDocument に適用するだけです。
C# |
コードのコピー
|
---|---|
XDocument doc = … View<XDocument> docView = doc.AsLive(); |
ライブビューを作成したので、使い慣れた(LINQ to XML)Elements、Descendants などのクエリー演算子(XmlExtensions Class を参照)やライブビューでサポートされる標準のクエリー演算子を使用して、ライブビューを定義できます。次に例を示します。
C# |
コードのコピー
|
---|---|
View<XElement> orders = docView.Descendants("Orders");
|
これは、ドキュメント内で注文のコレクションを定義します。このコレクションはライブです。つまり、プログラムによって変更される XDocument 内のデータに基づいて自動的に最新の状態に維持されます。その結果、ADO.NET DataTable、DataView などの任意の動的コレクションを使用する場合と同様に、このコレクション内のデータを使用できます。特に、別のセクションで示すように、データにインデックスを作成し、そのインデックスを使用して、クエリーやプログラムによる検索を高速化できます。これは、LiveLinq to XML により、パフォーマンスの低下なくメモリ内の XML データを使用できること、したがってカスタムコレクションクラスを作成したり、ADO.NET などの他のフレームワークを使用して XML データを操作する必要がなくなることを意味しています。LINQ to XML に LiveLinq を追加すれば十分です。
XML データに対していくつかのライブビューが定義できたので、クエリーを実行できます。次に例を示します。
C# |
コードのコピー
|
---|---|
var query = from Order in orders.AsIndexed() where (string)Order.IndexedAttribute("CustomerID") == "ALFKI" |
これは、特定の顧客の注文をクエリーします。