【发布时间】:2015-01-09 14:56:49
【问题描述】:
我是 MVC 和 LINQ 的新手,我正在学习如何将 AngularJs 和 MVC 用于分配给我的新项目。所以我正在通过在线视频学习这些技术。导师使用代码优先的方法,所以 Visual Studio 创建了所有必要的文件和一个与导师模型匹配的数据库,另一方面,我已经有一个数据库,我创建了 Api 来对数据库执行 REST 操作。所以当我在下面运行这段代码时
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;
}
但是,我收到一个错误提示
错误:无法从用法推断方法
'System.Linq.Enumerable.OrderBy<TSource,TKey>(System.Collections.Generic.IEnumerable<TSource>, System.Func<TSource,TKey>)'的类型参数。尝试明确指定类型参数。
我该如何解决这个问题?
【问题讨论】:
-
我猜是因为您使用的是存储过程(不返回 IQueryable),因此尝试将其分配给
items失败。确实,您应该将参数传递给存储过程。 -
您确定有接受字符串的 OrderBy 扩展版本吗? msdn.microsoft.com/pt-br/library/…
-
这里也一样,我不知道接受字符串作为参数的“OrderBy”方法。您应该提供更多信息。
-
指定 GetAllTodoEntryStoredProcedure 的返回类型,而不是 var 结果。它可能不是 IEnumerable。
标签: c# asp.net-mvc json angularjs linq