【发布时间】:2010-07-10 17:26:36
【问题描述】:
我有一些方法可以对来自我的实体的数据执行标准过滤器(使用 Entity Framework v4)。
示例 #1:
protected IQueryable<Database.Product> GetActiveProducts( ObjectSet<Database.Product> products ) {
var allowedStates = new string[] { "Active" , "Pending" };
return (
from product in products
where allowedStates.Contains( product.State )
&& product.Hidden == "No"
select product
);
}
示例 #2:
protected IQueryable<Database.Customer> GetActiveProducts( ObjectSet<Database.Customer> customers ) {
var allowedStates = new string[] { "Active" , "Pending" };
return (
from customer in customers
where allowedStates.Contains( customer.State )
&& customer.Hidden == "No"
select customer
);
}
如您所见,除了它们操作的实体类型之外,这些方法是相同的。我有超过 10 种这些类型的方法,一种用于我系统中的每种类型的实体。
我试图了解如何拥有 1 个可以传入任何实体类型的单一方法,并在存在 2 个字段/属性时让它执行 where 子句。
我没有在数据库中使用继承,所以就系统而言,每个实体类型都有“隐藏”和“状态”字段是巧合。
我的谷歌搜索告诉我它与使用 Expression.Call() 构建代码有关,但我现在头晕目眩!
【问题讨论】:
标签: c# entity-framework linq-to-entities