LINQ を使用したクエリの作成
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
このセクションでは、Sitecore Content Hub で特定のエンティティを検索するクエリを作成する方法について説明します。
クエリ オブジェクト自体はクエリを実行しませんが、クエリの条件を記述します。 クエリ クライアントがクエリの実行を担当します。
最初に、Sitecore Content Hubでの LINQ クエリのオプションと構造について説明し、最後にいくつかの例を示します。
LINQ の開始方法
LINQ の開始方法
クエリを作成するための推奨される方法は、LINQ を使用することです。 LINQ に慣れていない場合は、 https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/getting-started-with-linqを参照してください。
LINQ クエリを十分に活用するには、次の用途があることを確認してください。
テンプレート
テンプレート
LINQ テンプレートは次のとおりです。
where句の複数の条件は、&& を使用してチェーンすることができます。
orderby を使用すると、結果を特定の (システム) プロパティの昇順または降順で並べ替えることができます。 複数の orderby ステートメントを使用して、より複雑な並べ替えを行うこともできます。
サポートされているエンティティ フィルター
サポートされているエンティティ フィルター
LINQ クエリでサポートされているエンティティのフィルターは、次のとおりです。
システム プロパティ
- Id (
long) - Identifier (
long) - 定義
- id (
long) - name (
string)
- id (
- 作成者
- user id (
long) - user name (
string)
- user id (
- 変更者
- user id (
long) - user name (
string)
- user id (
- Created on (
DateTime) - Modified on (
DateTime)
たとえば、id でフィルタリングするには、次のようにします。
エンティティ メンバー
- プロパティ値 (特定のカルチャの値でのフィルター処理もサポート)
- リレーション (親 id のみフィルタリング)
たとえば、プロパティ値でフィルタリングするには、次のようにします。
サポートされている比較演算子
サポートされている比較演算子
システム プロパティ
システム プロパティのデータ型によって、次のようになります。
- long:
==、!= - string:
==、!= - DateTime:
==、!=、>、<、>=、<=
たとえば、指定した日付以降に変更されたエンティティをフィルタリングするには、次のようにします。
プロパティ
プロパティのデータ型によって、次のようになります。
- string:
==、!= - int:
==、!=、>、<、>=、<= - long:
==、!=、>、<、>=、<= - decimal:
==、!=、>、<、>=、<= - bool:
==、!= - DateTime:
==、!=、>、<、>=、<= - DateTimeOffset:
==、!=、>、<、>=、<=
たとえば、タイトルが「Logo」ではないエンティティをフィルタリングするには、次のようにします。
その他のプロパティ フィルター
その他のプロパティ フィルター
「in」フィルター
In フィルターを使用すると、コレクションまたはコンマ区切りの値を指定できます。これにより、単一の値ではなく複数の値をフィルタリングできます。
In フィルターがサポートされているのは、次のとおりです。
- エンティティ ID
- エンティティ識別子
- プロパティ値
- リレーション値 (親 ID のみ)
タイトルが「Logo」または「Poster」に設定されているエンティティを見つけましょう。
文字列フィルター
文字列プロパティは、いくつかの追加のフィルターをサポートします。
Contains: 値に指定された部分文字列が含まれている必要があります。StartsWith: 値が指定された部分文字列から始まる必要があります。EndsWith: 値が指定された部分文字列で終わる必要があります。
これらのフィルターでは大文字と小文字は区別されません。
次のクエリを使用すると、Title プロパティに「logo」が含まれるすべてのエンティティが見つかります。
サポートされている並べ替え
サポートされている並べ替え
並べ替えがサポートされているのは、次のとおりです。
- エンティティ ID
- エンティティ識別子
- 定義 ID
- 定義名
- 作成者ユーザー ID
- 作成者ユーザー名
- 変更者ユーザー ID
- 変更者ユーザー名
- 作成日時
- 変更日時
- プロパティ値
たとえば、作成日でアセットを並べ替えて、次にタイトルで並べ替えるには、次のようにします。
選択オプション
選択オプション
現在、select句では、読み込みオプションと設定操作のみがサポートされています。
読み込みオプションと設定操作
[!注意] バージョン 3.1 以降、これらの操作は廃止されています。 読み込み設定とクエリ オブジェクトは分離されており、個別のパラメーターとして渡す必要があります (該当する場合)。
サポートされている選択オプションは、次のとおりです。
InCultures: 指定されたカルチャのエンティティを読み込みますWithProperties: 指定されたプロパティをエンティティに読み込みますWithRelations: 指定されたリレーションをエンティティに読み込みますLoadConfiguration: 指定された読み込み設定でエンティティを読み込みます
これらの選択オプションの複数を組み合わせることができます。 最新の操作は、その前に該当する操作があれば必ずそれを上書きします。
この例では、 既定のカルチャとすべてのプロパティを読み込んでリレーションは読み込まないという既定のクエリ読み込み設定から始めて、AssetTypeToAssetリレーションを追加します。 WithRelations は、その前に設定された読み込み設定のリレーション読み込みオプションを上書きします。
[!注] 詳細については、読み込み設定を参照してください。
結果演算子
結果演算子
LINQ 使用時、skip (最初の x 件のエンティティをスキップ) およびtake (x 件のエンティティを返す) もサポートされます。
これにより、ID の降順でエンティティが並べ替えられ、最初の 5 件のエンティティ (最新 5 件のエンティティ) がスキップされてから、その次の 5 件のエンティティが返されます。
例
例
以下に例のリストを示します。 これらの例のほとんどは非常にシンプルで、説明を要しないものです。 後ろの方になるほど複雑な例になります。
ID で検索
識別子で検索
定義 ID で検索
定義名で検索
作成者ユーザー ID で検索
作成者ユーザー名で検索
変更者ユーザー ID で検索
変更者ユーザー名で検索
作成日時で検索
2 つの日付間も可能です:
変更日時で検索
2 つの日付間も可能です:
プロパティ値で検索
プロパティ Title が「Logo」に設定されているを持つすべてのエンティティを検索します。
特定のカルチャのプロパティ値で検索
英語カルチャでプロパティ Description が「Hello world!」に設定されているすべてのエンティティを検索します。
リレーション親値で検索
エンティティ オブジェクトで親プロパティにアクセスして、指定したリレーションのクエリを実行できます。 リレーションをクエリを実行するには、リレーション名と親 ID を指定する必要があります。
より高度なクエリ
次のクエリは、「M.Demo.User」によって作成された最新 10 個のアセットでタイトルが「Logo」のアセットを取得します。