У меня есть это в моем хранилище, и он работает, как ожидалось:Linq Найти метод, как IQueryable
public virtual EntityClass GetById(int id)
{
return db.Set<EntityClass>().Find(id);
}
Однако, у меня есть несколько таблиц с либо слишком много столбцов (например: 10 столбцов, где мне нужно только 3 из их) или некоторые таблицы, где у меня есть длинный текст там и снова, их не нужно брать.
Я думал, есть ли способ поиска по первичному ключу, но, возможно, получить результат IQueryable? Или, по крайней мере, то, что может позволить мне сделать что-то вроде этого:
var blah = myRepo.GetById(myId).Select(s => new {column 2, column 3, column 7})
Как найти поиск по первичному ключу (таким образом, возвращаясь ровно один объект) - почему бы вам нужно 'возвращаемое значение IQueryAble'? – ChriPf
Не получает ли IQueryable от поиска поражение цели? Поиск обычно используется, чтобы избежать поездки в базу данных. Что вы пытаетесь оптимизировать здесь? – jjj
'Поиск' является немного особенным в том, что он сначала проверит в StateManager перед тем, как отправиться в Db (Store), чтобы найти объект, то есть он потенциально кэшируется и должен иметь все возвращенные поля. Если вам нужен оптимальный sql (например, для узкого индекса, а не для таблицы), используйте точку с выбранной проекцией или если вы хотите использовать 'Find', вам нужно вручную отобразить полный объект в Lite или anon class (но, похоже, мало смысла, так как это должно быть дешево для повторного использования всего объекта). – StuartLC