1. フィルター

手動でのクエリの作成

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

[!警告] これは、クエリ作成には推奨できない方法です。 代わりに、LINQ を使用してください。

クエリ オブジェクト

クエリ クライアントでは、クエリを定義する必要があります。 クエリは、次のパラメーターをサポートしています。

パラメーター説明
フィルター呼び出されるフィルターのタイプ。
Skipスキップするエンティティの数。
Take取得するエンティティの数。
LoadConfiguration適用する読み込み設定。
Sorting適用する並べ替えオプション。

IdQueryFilter

エンティティ ID でフィルタリングします。

単一の ID でクエリを実行するには、パラメーター「Value」を使用する必要があります。

var query = new Query
    {
        Filter = new IdQueryFilter { Value = entityId }
    };

複数の ID でフィルタリングするには、パラメーター「Values」を使用する必要があります。

var query = new Query
    {
        Filter = new IdQueryFilter {
            Values = new List<long>() { assetId, assetTypeId }
        }
    };

サポートされている比較演算子は、次のとおりです。

  • 等しい
  • NotEquals

演算子が指定されていない場合は、既定で Equals 比較演算子が使用されます。

DefinitionQueryFilter

エンティティ定義でフィルタリングすることができます。

単一のエンティティ定義名でフィルタリングするには、「Name」パラメーターを使用する必要があります。

var query = new Query
    {
        Filter = new DefinitionQueryFilter { Name = "M.Asset" }
    };

複数のエンティティ定義名でフィルタリングするには、「Names」パラメーターを使用する必要があります。

var query = new Query
    {
        Filter = new DefinitionQueryFilter {
            Names = new string[] { "M.Asset", "M.Fragment" }
        }
    };

「Id」パラメーターを使用して、ID でエンティティ定義をフィルタリングすることもできます。

var query = new Query
{
    Filter = new DefinitionQueryFilter {
        Id = assetDefinitionId
    }
};

サポートされている比較演算子は、次のとおりです。

  • 等しい
  • NotEquals

演算子が指定されていない場合は、既定で Equals 比較演算子が使用されます。

PropertyQueryFilter

1 つまたは複数のプロパティ値に基づいてエンティティをフィルタリングします。 指定したデータ型によって、値の型と有効な比較演算子が決まります。

データ型文字列を使用してデータソースのプロパティでクエリを実行できることに注意してください。

単一の値でフィルタリングする場合は、「Value」パラメーターを使用する必要があります。

var query = new Query
    {
        Filter = new PropertyQueryFilter {
            Property = "Title",
            Value = "Logo",
            DataType = FilterDataType.String
        }
    };

「Values」パラメーターを使用して複数の値でフィルタリングすることもできます。 それらの値は OR 演算子を使用していると解釈されます。 すなわち、指定された値のいずれかに一致する、指定されたプロパティを持つエンティティが返されることになります。

var query = new Query
    {
        Filter = new PropertyQueryFilter {
            Property = "Title",
            Values = new string[] { "Logo", "Sitecore Content Hub" },
            DataType = FilterDataType.String
        }
    };

「Culture」パラメーターを使用して、フィルタリングするカルチャを指定できます。 これは多言語プロパティにのみ適用されます。

var query = new Query
    {
        Filter = new PropertyQueryFilter {
            Property = "Description",
            Value = "Sitecore Content Hub Logo",
            DataType = FilterDataType.String,
            Culture = new CultureInfo("en-US")
        }
    };

サポートされている比較演算子は、指定されたデータ型によって異なります。 指定されたコンテキストで比較演算子が無効な場合は、例外がスローされます。

RelationQueryFilter

1 つまたは複数の親 ID を使用して、指定されたエンティティとのリレーションを持つエンティティをフィルタリングします。 リレーションの名前は「Relation」パラメーターで指定する必要があります。

単一のリレーション エンティティでフィルタリングする場合は、「ParentId」パラメーターを指定する必要があります。

var query = new Query
    {
        Filter = new RelationQueryFilter {
            Relation = "AssetTypeToAsset",
            ParentId = assetTypeId
        }
    };

「ParentIds」パラメーターを使用して、複数の親 ID を指定できます。 それらの ID は OR 演算子を使用していると解釈されます。 すなわち、指定された値のいずれかに一致する、指定されたプロパティを持つエンティティが返されることになります。

var query = new Query
    {
        Filter = new RelationQueryFilter {
            Relation = "AssetTypeToAsset",
            ParentIds = new long[] { logoAssetTypeId, mediaAssetTypeId }
        }
    };

CreatedByQueryFilter

1 人または複数のユーザーによって作成されたエンティティをフィルタリングします。

「Id」プロパティまたは「Ids」プロパティのいずれかを使用して 1 つまたは複数 ID を指定することでフィルターを適用できます。

var query = new Query
    {
        Filter = new CreatedByQueryFilter()
        {
            Id = userId
        }
    };

「Ids」パラメーターを使用して複数の ID を指定すると、指定されたユーザー ID のいずれかによって作成されたすべてのエンティティが返されます。

var query = new Query
    {
        Filter = new CreatedByQueryFilter()
        {
            Ids = new long[] { demoUserId, trainingUserId }
        }
    };

「Username」または「Usernames」プロパティを使用して 1 つまたは複数のユーザー名を指定することもできます。

var query = new Query
    {
        Filter = new CreatedByQueryFilter()
        {
            Username = "M.Demo.User"
        }
    };

複数のユーザー名を指定すると、指定されたユーザーのいずれかによって作成されたエンティティが返されます。

var query = new Query
    {
        Filter = new CreatedByQueryFilter()
        {
            Usernames = new string[] { "M.Demo.User", "M.Training.User" }
        }
    };

サポートされている比較演算子は、次のとおりです。

  • 等しい
  • NotEquals

演算子が指定されていない場合は、既定で Equals 比較演算子が使用されます。

CompositeQueryFilter

「AND」結合演算子と「OR」結合演算子を使用して、さまざまなクエリ フィルターを組み合わせることができます。 クエリ フィルターは、複合クエリ フィルターの「Children」パラメーターを使用して指定できます。 結合メソッド演算子は、「CombineMethod」パラメーターを使用して指定できます。

var query = new Query
    {
        Filter = new CompositeQueryFilter()
            {
                Children = new QueryFilter[] {
                    new RelationQueryFilter
                    {
                        Relation = "AssetTypeToAsset",
                        ParentId = logoAssetTypeId
                    },
                    new PropertyQueryFilter {
                        Property = "Title",
                        Values = new string[] { "Logo", "Sitecore Content Hub" },
                        DataType = FilterDataType.String
                    }
                },
                CombineMethod = CompositeFilterOperator.Or
            }
    };

クエリ読み込み設定

読み込み設定は、Query オブジェクトの LoadConfiguration で設定できます。

詳細については、読み込み設定を参照してください。

[!注] 古い SDK からの EntityLoadOptions は非推奨になりました。代わりに LoadConfiguration を使用してください。

この記事を改善するための提案がある場合は、 お知らせください!