Это должно работать:
public Request SearchById(int id)
{
using(Model.ModelContainer cont = new Model.ModelContainer())
{
return cont.Requests.Where(req => req.ReqId == id).FirstOrDefault();
}
}
То, что у вас было IEnumerable<Request>
, а не один запрос.Также убедитесь, что в вашем кодовом файле есть
using System.Linq;
.Также всегда используйте контекст, когда вы можете использовать using
блок.
cont.Requests.First(req => req.ReqId == id)
Это также должно работать - убедитесь, что у вас есть using System.Linq
в вашем файле кода.
Как я могу работать с многострочными результатами, кроме преобразования в список
Поскольку ваш контекст является локальным и недоступным вне вашего метода (он впоследствии удаляется), список - ваш лучший вариант.Если вы сохраняете его IQueryable
, тогда вы еще не получили результаты из БД, вы только что определили свой запрос, это приводит к проблеме, когда потребитель получает результаты, поскольку только после этого выполняется запрос БД -но соответствующий контекст БД мог быть уже удален.Добавьте .ToList()
в конце вашего запроса, чтобы материализовать IQuerable<T>
Мне нужно создать расширенный поиск (у меня 6-7 столбцов), есть ли общий способ сделать это?
Вы можете объединить несколько предложений в методе расширения .Where (), например, Where( x=> x.A=="foo" && x.B == 42)
.При необходимости вы также можете объединить несколько Where()
методов.