Как добавить второе предложение where к выражению linq

#linq #iqueryable

#linq #iqueryable

Вопрос:

Пытаюсь добавить второе предложение where к выражению linq, но оно не регистрируется.

 var query = _dbSetBookedResource.AsQueryable<Resource>();

var resources = (from Resource in query where Resource.DateFrom == date select Resource)


if(true)
{
resources.Where(b => b.MemberId == currentUserId);
}
  

По какой-то причине второе предложение where не регистрируется.

Комментарии:

1. Разве вы не ищете что-то вроде where Resource.DateFrom == date amp;amp; Resource.MemberId == currentUserId ?

Ответ №1:

По какой-то причине второе предложение where не регистрируется.

Это потому, что вы нигде не используете возвращаемое значение. Это просто настройка запроса, но затем игнорирование его. Никакие методы LINQ не изменяют значение, для которого они вызываются — вместо этого они создают новый запрос, который имеет соответствующую фильтрацию, проекцию и т. Д.

Вам нужно:

 resources = resources.Where(b => b.MemberId == currentUserId);
  

Также обратите внимание, что ваш первоначальный запрос можно было бы записать проще как:

 var resources = query.Where(r => r.DateFrom == date);
  

Выражения запроса излишни, когда все, что вам нужно, это простой фильтр или проекция.