Как я могу отправить фильтр в выражение linq? - PullRequest
0 голосов
/ 07 мая 2020

У меня есть такой метод на уровне Dataaccsess. Есть ли способ отправить два фильтра в выражение linq, например код, выделенный двойными звездочками?

 public TEntity get(Expression<Func<TEntity, bool>> filter)
    {
        using (TContext context=new TContext())
        {
            return context.Set<TEntity>().SingleOrDefault(filter);
        }
    }


public void control(string username,string username)
{
   UserDal.get(**u=>u.username==username&&u=>u.password==password**);
    //enter code`enter code here` here
}

1 Ответ

0 голосов
/ 08 мая 2020

Метод получения ожидает параметр Expression<Func<TEntity, bool>>, я предполагаю, что сущность User наследуется от TEntity,

Если эти свойства: user.UserName и user.Password не входят в базовый класс TEntity, это невозможно сделать с помощью вашей сигнатуры метода - в выражении вы можете получить доступ только к свойствам из TEntity

Чтобы передать выражение вашего фильтра для свойств User class specifici c, вы пришлось бы создать отдельный метод с параметром Expression<Func<User, bool>>, а затем просто вызвать его как:

UserDal.getUser(u => u.UserName == "username" && u.Password == "password");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...