i new для MVC и LINQ, и я изучаю, как использовать AngularJs и MVC для нового проекта, который мне присвоен. Так что я изучаю эти технологии через онлайн-видео. Репетитор использует первый подход к коду, поэтому Visual Studio создает все необходимые файлы и базу данных, которая соответствует моделям преподавателей, а с другой стороны уже есть база данных, и я создал Api для выполнять операции REST с БД. Поэтому, когда я запускаю этот код нижеПоиск и сортировка IEumerable с использованием LINQ
public IEnumerable<Todo> GetTodos()
{
return Models.DbStoredProcModel.GetAllTodos.GetAllTodoEntryStoredProcedure();
}
он возвращает выход JSon как этот
Так до этого момента, мой выход JSON совпадает с видео-учебник, даже если наш код является подход другой. Таким образом, учитель, используя этот кусок кода он написал
Репетиторы Код:
public IEnumerable<Todo> GetTodos(string q= null,string sort = null, bool desc = false, int ? limit = null, int offset =0)
{
var result = ((IObjectContextAdapter)db).ObjectContext.CreateObjectSet<Todo>();
IQueryable<Todo> items = string.IsNullOrEmpty(sort)
? result.OrderBy(o => o.Priority)
: result.OrderBy(String.Format("it. {0} {1}", sort, desc ? "DESC" : "ASC"));
if (!string.IsNullOrEmpty(q) && q != "undefined")
items = items.Where(t => t.Text.Contains(q));
if (offset > 0) items = items.Skip(offset);
if (limit.HasValue) items = items.Take(limit.Value);
return items;
}
это позволит ему выполнять поиск и сортировка операций по возвращаемых данных.
теперь здесь мой собственный код, пытающийся код, пытающийся сделать то же самое.
public IEnumerable<Todo> GetTodos(string q= null,string sort = null, bool desc = false, int ? limit = null, int offset =0)
{
var result = Models.DbStoredProcModel.GetAllTodos.GetAllTodoEntryStoredProcedure();
IQueryable<Todo> items = string.IsNullOrEmpty(sort)
? result.OrderBy(o => o.Priority)
// i get the error on the line below
: result.OrderBy(String.Format("it. {0} {1}", sort, desc ? "DESC" : "ASC"));
if (!string.IsNullOrEmpty(q) && q != "undefined")
items = items.Where(t => t.Text.Contains(q));
if (offset > 0) items = items.Skip(offset);
if (limit.HasValue) items = items.Take(limit.Value);
return items;
}
однако, я получаю сообщение об ошибке сказав, что
Error:The type arguments for method
'System.Linq.Enumerable.OrderBy<TSource,TKey>(System.Collections.Generic.IEnumerable<TSource>, System.Func<TSource,TKey>)'
cannot be inferred from the usage. Try specifying the type arguments explicitly.
Как я это исправить?
Я предполагаю, что, поскольку вы используете хранимую процедуру (которая не возвращает IQueryable), попытка присвоить ее «элементам» терпит неудачу. Действительно, вы должны передавать параметры хранимой процедуре. – markpsmith
Вы уверены, что существует версия расширения OrderBy, которая принимает строку? http://msdn.microsoft.com/pt-br/library/system.linq.queryable.orderby(v=vs.110).aspx – gustavodidomenico
То же самое здесь, я не знаю метода «OrderBy», который принимает string в качестве параметра. Вы должны предоставить дополнительную информацию. –