テストしていませんが、このクエリ式はどうですか? Vehicleエンティティを内部結合としてリンクしているため、 Carである必要があります。私は少し怠け者でテストしたくないので、フィールドVehicleTypeは文字列であると想定しています (私はこの筋金入りのスタイルを入力しています。コンパイルは必要ありません - 純粋な脳の作業です)。
必要に応じて、 Criteriaセクションを追加して、実際に取得するContactインスタンスを制御することもできます。それがどうだったか教えてください!
冗長で申し訳ありません。私はあなたがそれが短いのが好きであることを知っています. 循環器系のとき、私の脳はよりよく機能します。
new QueryExpression
{
EntityName = "contact",
ColumnSet = new ColumnSet("fullname"),
LinkEntities =
{
new LinkEntity
{
JoinOperator = JoinOperator.Inner,
LinkFromEntityName = "contact",
LinkFromAttributeName = "contactid",
LinkToEntityName = "vehicle",
LinkToAttributeName = "contactid",
Columns = new ColumnSet("vehicletype"),
EntityAlias = "Vroom",
//LinkCriteria = { Conditions =
//{
// new ConditionExpression(
// "vehicletype", ConditionOperator.Equal, "car")
//} }
LinkCriteria = { Conditions =
{
new ConditionExpression(
"vehicletype", ConditionOperator.NotEqual, "truck")
} }
}
}
};
編集:
MVP の Gustaf Westerlund と話をしたところ、次の回避策が提案されました。元の質問に対する答えではないことを強調させてください。それを解決する方法にすぎません。そして、それは面倒です。:)
したがって、ヒントはContactまたはPersonエンティティにフラグを追加することです。次に、 Vehicleの新しいインスタンスを作成するたびに、メッセージを起動し、プラグインを使用して、後者の作成に関する最初の情報を更新する必要があります。
これにはいくつかの欠点があります。
- それは私たちが何かをすることを必要とします。
- それは単純なやり方ではありません。
- 新しいタイプの車両を追加するたびに、維持費が高くなります。
- 考慮すべきケースが多いため、バグの可能性が高くなります ( Vehicleインスタンスが再署名、削除されたときにフラグ化がどうなるかなど)。
したがって、あなたの質問に対する私の答えは、「できません」に変更されます。これは、提示された代替ソリューションによって(喜んで)間違っていることが証明されるまで有効です。アヒル!
個人的には、(ほとんど) すべてをフェッチし、そこに LINQ の猟犬を解き放ちます。しかし、私は笑顔や誇りを持たずにそれを行います. :)