クライアントビューはライブです。クライアントビューは、データの変化に伴って自動的に最新の状態を維持します。ただし、ライブビュー機能はさらに汎用的です。ライブビュー(View <T> クラスのオブジェクト。ClientView の派生元)は、エンティティだけでなく、任意の種類のデータに対して定義できます。また、グループ化、ソート、結合などの多くの LINQ クエリー演算子をサポートします(「C1LiveLinq」を参照)。
これらすべての操作(中でもグループ化とソートが最もよく使用される)をクライアントビューに適用できます(ClientView は View から派生しているため)。次に例を示します。
LINQ |
コードのコピー
|
---|---|
View productsByCategory = products .OrderBy(p => p.ProductName).GroupBy(p => p.CategoryID); LINQ クエリー構文の場合は次のようになります。 View productsByCategory = from p in products orderby p.ProductName group p by p.CategoryID into g select new { Category = g.Key, Products = g }; |
結果のビューはライブですが、クライアントビューではありません。これは何らかの欠陥ではありません。単に、このようなビューでは ClientView|document=XMLDocuments\Reference;topic=ClientView(T) Class 機能が必要ないためです。ソートやグループ化は、サーバーに頼らず、完全にクライアント上で実行できます。ただし、開発者は、混乱を避けるためにこの事実を認識しておく必要があります。ビューに LINQ クエリー操作を適用すると、ClientView ではなく View になります(ただし、ライブであることは変わらず、クライアント上でデータに行われたすべての変更が自動的に反映されます)。したがって、たとえば、サーバー側のフィルタ処理が必要な場合は、LINQ Where メソッドではなく、AsFiltered メソッドを使用します。クライアント上でフィルタ処理を行う場合は、LINQ Where メソッドを使用します。