Ste*_*ven 6 c# asp.net asp.net-mvc linq-to-sql
我正在尝试按照此链接中的演示将jqGrid添加到MVC应用程序.
我有一个名为Companies的表,我试图在网格中显示.公司只包含ID和名称.
我在控制器功能中遇到错误:
public JsonResult DynamicGridData(string sortIndex, string sortOrder, int page, int rows)
{
int pageIndex = Convert.ToInt32(page) - 1;
int pageSize = rows;
var companies = companiesRepository.Companies.OrderBy(sortIndex + " " + sortOrder).Skip(pageIndex * pageSize).Take(pageSize);
//Error here
...
}
Run Code Online (Sandbox Code Playgroud)
我在调用OrderBy()的行上收到错误:
无法从用法中推断出方法'System.Linq.Enumerable.OrderBy(System.Collections.Generic.IEnumerable,System.Func)'的类型参数.尝试显式指定类型参数.
我真的不知道这个错误是什么意思,我也找不到解释.我不确定在简单的OrderBy函数上导致此错误的原因.
小智 21
这个问题的具体答案是你需要添加
using System.Linq.Dynamic;
Run Code Online (Sandbox Code Playgroud)
并且您需要Dynamic.DLL
在项目中添加引用.
如果您查阅了您正在调用的方法(Enumerable.OrderBy)的文档,您将知道该参数是a Func<TSource, TKey>
而不是字符串.
无法从用法中推断出方法'System.Linq.Enumerable.OrderBy(System.Collections.Generic.IEnumerable,System.Func)'的类型参数.尝试显式指定类型参数.
编译器试图弄清楚字符串参数实际上是一个Func,然后决定它无法确定什么是TSource以及什么是TKey.它要求您通过在调用中指定这些类型来提供帮助,如下所示:
companiesRepository.Companies.OrderBy<Company, int>(sortIndex + " " + sortOrder)
Run Code Online (Sandbox Code Playgroud)
如果你这样做,那么编译器会告诉你字符串不是一个正确的参数,因为现在它有足够的信息来知道它.
我知道这是我的一个男生错误,但是我收到了相同的错误“ CS0411无法从用法中推断出方法'Enumerable.OrderBy(IEnumerable,Func)'的类型参数。尝试显式指定类型参数。 ”。
原来,我正在排序的“属性”实际上是一个函数,而我省略了“()”。我花了AGES才找到!
在我的代码摘录中:
return _numbers.Values.OrderBy(x => x.TotalScore);
Run Code Online (Sandbox Code Playgroud)
本来应该
return _numbers.Values.OrderBy(x => x.TotalScore());
Run Code Online (Sandbox Code Playgroud)
只是以为我会提到它……
归档时间: |
|
查看次数: |
28503 次 |
最近记录: |