2009-10-06 60 views
0

我在testdatabase 3個表,客戶<擴展>羣組與實體框架的過濾器查詢

對於客戶我有一個返回這樣所有羣組的方法:

 public IQueryable<Usergroup> GetUsergroups() 
    { 
     return from ug in _entities.UsergroupSet.Include("Customer") 
       select ug; 
    } 

而對於我有一個「過濾級」類用戶組

 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); 

它的偉大工程,但現在的問題是,我想這樣延長,我可以通過客戶ID過濾藏漢,有點像:

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

回答

2

我不知道如果我理解你的問題描述的方式,但它是正常的,你不能使用方法ByCustomerID因爲你IQueryable<Customer>沒有定義的擴展在IQueryable<UserGroup>

如果要定義它IQueryable<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; 
    } 
+0

真棒,THX了很多:) – 2009-10-06 13:44:53

+0

沒有problemo,高興我可以幫忙... – 2009-10-06 13:59:23