Asp.net-linq
ASP.NET-LINQ
ほとんどのアプリケーションはデータ中心ですが、ほとんどのデータリポジトリはリレーショナルデータベースです。 長年にわたり、設計者と開発者はオブジェクトモデルに基づいてアプリケーションを設計してきました。
オブジェクトは、データアクセス層(DAL)と呼ばれるデータアクセスコンポーネントへの接続を担当します。 ここで、考慮すべき3つのポイントがあります。
- アプリケーションに必要なすべてのデータが同じソースに保存されるわけではありません。 ソースは、関係データベース、何らかのビジネスオブジェクト、XMLファイル、またはWebサービスです。
- インメモリオブジェクトへのアクセスは、データベースまたはXMLファイルのデータにアクセスするよりも簡単で安価です。
- アクセスされるデータは直接使用されませんが、ソート、順序付け、グループ化、変更などが必要です。
したがって、さまざまなデータソースからのデータを結合し、数行のコードで標準のデータ処理操作を実行できる、あらゆる種類のデータアクセスを容易にするツールが1つあれば、非常に役立ちます。
LINQまたはLanguage-Integrated Queryはそのようなツールです。 LINQは、クエリをオブジェクトとして設定する.Net Framework 3.5およびそのマネージ言語の拡張機能のセットです。 共通言語を使用してさまざまなタイプのデータを照会するための共通構文とプログラミングモデルを定義します。
Select、Project、Join、Group、Partition、Set操作などの関係演算子はLINQに実装され、.Net framework 3.5のC#およびVBコンパイラはLINQ構文をサポートし、構成されたデータを操作できるようにしますADO.NETに頼らずに保存します。
たとえば、C#でLINQクエリを使用して、NorthwindデータベースのCustomersテーブルをクエリすると、コードは次のようになります。
どこで:
- 「from」キーワードは、コレクションのコンテンツを論理的にループします。
- 「where」キーワードを含む式は、コレクション内の各オブジェクトに対して評価されます。
- 「select」ステートメントは、評価されるオブジェクトを選択して、返されるリストに追加します。 *'var’キーワードは変数宣言用です。 返されたオブジェクトの正確なタイプは不明であるため、情報が動的に推測されることを示しています。
LINQクエリは、IEnumerable <T>から継承する任意のデータ保持クラスに適用できます。ここで、TはList <Book>などの任意のデータ型です。
概念を理解するために例を見てみましょう。 この例では、次のクラスを使用します。Books.cs
このクラスを使用するWebページには、書籍のタイトルを表示する単純なラベルコントロールがあります。 Page_Loadイベントは、書籍のリストを作成し、LINQクエリを使用してタイトルを返します。
ページが実行されると、ラベルにクエリの結果が表示されます。
上記のLINQ式:
次のSQLクエリと同等です。
LINQオペレーター
これまでに使用された演算子とは別に、すべてのクエリ句を実装する他の演算子がいくつかあります。 いくつかの演算子と節を見てみましょう。
結合句
SQLの「結合句」は、2つのデータテーブルを結合するために使用され、両方のテーブルの列を含むデータセットを表示します。 LINQもそれが可能です。 これを確認するには、前のプロジェクトにSaledetails.csという名前の別のクラスを追加します。
Page_Loadイベントハンドラーにコードを追加して、join句を使用して両方のテーブルでクエリを実行します。
結果のページは次のとおりです。
Where句
「where句」を使用すると、クエリにいくつかの条件フィルターを追加できます。 たとえば、ページ数が500を超える本を表示する場合は、Page_Loadイベントハンドラーを次のように変更します。
クエリは、ページ数が500を超える行のみを返します。
OrderbyおよびOrderbydescending句
これらの句により、クエリ結果をソートできます。 書籍のタイトル、ページ数、価格を価格でソートするには、Page_Loadイベントハンドラーで次のコードを記述します。
返されるタプルは次のとおりです。
Let句
let句を使用すると、変数を定義し、データ値から計算された値を割り当てることができます。 たとえば、上記の2つの売上から合計売上を計算するには、以下を計算する必要があります。
これを実現するには、次のコードスニペットをPage_Loadイベントハンドラーに追加します。
let句を使用すると、変数を定義し、データ値から計算された値を割り当てることができます。 たとえば、上記の2つの売上から合計売上を計算するには、以下を計算する必要があります。
結果のクエリページは次のようになります。