predicatebuilder の例は、述語を使用して一般的なロジックを定義する方法を示しています。しかし、私は次のことに苦労しています:
Product に Category との外部キー関係があり、Category に DateTime があるとします。終了日。
アクティブなカテゴリを見つけるための一般的なロジックをいくつか書くことができます:
public partial class Category
{
public static Expression<Funct<Category,bool>> IsActive()
{
return c=>c.EndDate.HasValue ? c.EndDate>DateTime.Now : true;
}
}
だから私は書くことができます
Categories.Where(Category.IsActive())
しかし、製品を照会するときにそれを機能させることができないようです。次のようなものを書きたいと思います:
Products.Where(p=>p.Category.IsActive() && p.Name.Contains("beer"));
別の方法を書くことができます
public static Expresision<Func<Product,bool>> IsCategoryActive()
{
return p=>p.Category.EndDate.HasValue ? p.Category.EndDate>DateTime.Now ? true;
}
しかし、このロジックを何度も何度も定義することは避けたいと思います...これをProductで一度定義できれば、もっといいでしょう