我的testdatabase中有3个表,Customers< - > CustomersUsergroups< - >群组
对于客户,我有一个返回所有用户组的方法:
public IQueryable<Usergroup> GetUsergroups()
{
return from ug in _entities.UsergroupSet.Include("Customer")
select ug;
}
为此,我有一个类Usergroup
的“过滤器类” public static IQueryable<Usergroup> ByUsergroupID(this IQueryable<Usergroup> qry, int usergroupID)
{
return from ug in qry
where ug.UsergroupID == usergroupID
select ug;
}
所以当我输入:
return _repository.GetUsergroups().ByUsergroupID(usergroupID);
它的效果很好,但现在的问题是我想扩展所以我可以按CustomerID过滤,有点像:
public static IQueryable<Customer> ByCustomerID(this IQueryable<Customer> qry, int customerID)
{
return from c in qry
where c.CustomerID == customerID
select c;
}
所以我可以像:
一样使用它return _repository.GetUsergroups().ByCustomerID(customerID);
是否可以使用“Include”?或者它不是一个简单的方法来解决它,因为它们是不同的类?
提前致谢
/ M
答案 0 :(得分:2)
我不确定我是否按照您描述的方式理解问题,但您不能使用方法ByCustomerID是正常的,因为您在IQueryable<Customer>
上定义的扩展名不在IQueryable<UserGroup>
上。
如果您想在IQueryable<UserGroup>
和上定义它,如果您打算将UserGroup分配给一个客户,可以这样做:
public static IQueryable<UserGroup> ByCustomerID(this IQueryable<UserGroup> qry, int customerID)
{
return from ug in qry
from c in ug.Customer
where c.CustomerID == customerID
select ug;
}