Linq to Sql,PredicateBuilder和定义一般逻辑

时间:2011-11-26 11:42:50

标签: linq-to-sql 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;
}

但是我想避免一遍又一遍地定义这个逻辑......如果我能在产品上定义一次,那就更好了

0 个答案:

没有答案