Расширение с помощью фильтров запросов с помощью структуры сущностей - PullRequest
0 голосов
/ 06 октября 2009

В моей базе данных есть 3 таблицы: Клиенты <-> Клиенты, Группы пользователей <-> Группы пользователей

Для клиентов у меня есть метод, который возвращает все группы пользователей, такие как:

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

это возможно сделать только с помощью «Включить»? или это не простой способ исправить это, так как это разные классы?

Заранее спасибо

/ М

1 Ответ

2 голосов
/ 06 октября 2009

Я не уверен, что понимаю проблему, как вы описали, но это нормально, что вы не можете использовать метод 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;
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...