У меня большой базовый запрос, в который я хотел бы добавить условные фильтры Где в различных методах. Я надеялся использовать отложенную загрузку, чтобы создать базовый запрос в методе и вызывать его в других местах в различных местах, которые я добавляю условные предложения where, а затем выполняю в конце.
Я пробовал что-то вроде:
public IEnumerable<MyModel> GetBaseQuery()
{
IEnumerable<MyModel> base= context.MyTable1.Join(...{lot of joins here})
.Select{
...select all of required fields for my model
}
return base;
}
public IEnumerable<MyModel> GetResultsByKeyword()
{
IEnumerable<MyModel> model= GetBaseQuery();
if(condition1 is true)
{
model = model.Where(x => x.Field1 == "Field1Value");
}
if(condition2 is true)
{
model = model.Where(x => x.Field2 == "Field2Value");
}
return model.Tolist(); //execute the query when calling ToList()
}
Выше не возвращает результатов, но если я соберу все в один большой метод, то он сделает то, что я хочу. Мой реальный дизайн, вероятно, имеет около 7 различных методов, которые будут вызывать «базовый» запрос, и я стараюсь избегать репликации базового запроса в каждом методе для 1) удобочитаемости и 2) текущего обслуживания, если запрос когда-либо нужно редактировать в добавить больше полей.