0

この記事に示されているように、私はジェネリックリポジトリパターンを使用しています。

これらは私のPOCOクラスです:

public class Order
{
    public int ID { get; set; }
    public int CustomerID {get; set;}

    [InverseProperty("Order")]
    public virtual List<OrderDetail> OrderDetail {get; set;}

    public static Expression<Func<Order, bool>> OrdersFromCustomer(decimal customerId)
    {
        return f => f.CustomerID == customerId;
    }
}

public class OrderDetail
{
    public int OrderID { get; set;}
    public int ID { get; set;}
    public int ItemID { get; set;}
    public int Amount { get; set;}

    [ForeignKey("OrderID")]
    public virtual Order { get; set;}
}

したがって、私のプログラムで顧客からすべての注文を受け取りたい場合は、次のようにすることができます。

using (MyDbContext context = new MyDbContext())
{
    MyRepository repository = new MyRepository(context);
    var orders = repository.Get(Order.OrdersFromCustomer(25));
}

それはうまく機能しますが、問題があります:金額が100を超えるすべての注文が必要な場合はどうなりますか?OrderFromCustomer関数として詳細にフィルターの式を作成するにはどうすればよいですか?
LinqKitでも試しましたが、結果がありません。

4

1 に答える 1

0

Whereフィルター句をチェーン化するだけで、たとえば次のようになります。

 orders = repository.Get(filter: q => q.Where(f => f.CustomerID == customerId).Where( n => n.Amount > 100);
于 2012-06-08T14:54:56.023 に答える