式ツリーを動的に作成しようとしています。
2つの単純なクラスがあると仮定します。
class CustomerType
{
public int Id { get; set; }
public string Name { get; set; }
public OrderType[] Orders { get; set; }
}
class OrderType
{
public int Id { get; set; }
public DateTime Date { get; set; }
public decimal Price { get; set; }
}
..および関連付けのない対応するエンティティタイプ(したがって、カスタム結合を使用する必要があります)。
顧客のリストに対応する注文を入力する必要があります。Linqには、左外部結合と左内部結合の2種類の結合があることを知っています。
したがって、左外部結合を使用して、次のクエリを記述できます(簡単にするために、カスタムのExpressionTreeジェネレーターコードの代わりにLinq式を使用して質問を説明します)。
var query = from c in db.Customers
join o in db.Orders on c.Id equals o.CustomerId into g
select new AccountType()
{
Id = c.Id,
Name = c.Name,
Orders = g
};
したがって、AccountTypeオブジェクトのOrdersプロパティには、対応するすべてのOrdersが含まれます。
注文テーブルのフィールドに基づいて、左内部結合を使用してフィルタリングで同じ結果を得る方法がわかりません(たとえば、価格が100.00を超える注文があるすべての顧客にクエリを実行する必要があります)。
var query = from c in db.Customers
join o in db.Orders on c.Id equals o.CustomerId
where o.Price > 100.00
select new AccountType()
{
Id = c.Id,
Name = c.Name,
Orders = ???
};
助けてくれてありがとう!