对列表进行排序使用LINQ

发布于 2024-10-31 11:16:08 字数 1019 浏览 1 评论 0 原文

List<DatsWussup.Models.Message> messages = mc.GetMessages();
List<DatsWussup.Models.JQGridMessage> gridMessages = FormatMessages(messages);

int pageIndex = Convert.ToInt32(page) - 1;
int pageSize = rows;
int totalRecords = gridMessages.Count;
int totalPages = (int)Math.Ceiling((float)totalRecords / (float)pageSize);

var questions = gridMessages
    .OrderBy(sidx + " " + sord)
    .Skip(pageIndex * pageSize)
    .Take(pageSize);

所以我在这里遵循 JqGrid 和 MVC 指南: http://haacked.com/archive/2009/04/14/using-jquery-grid-with-asp.net-mvc.aspx 并在他添加排序/的步骤中分页,上面的代码我是从博客上拿来的。

现在,您可能只需查看代码就可以明白我正在尝试做什么,特别是如果您熟悉 JqGrids 和 MVC 一起使用的话。但是,我收到此错误:

方法 'System.Linq.Enumerable.OrderBy(System.Collections.Generic.IEnumerable, System.Func)' 不能 从使用情况推断。尝试 指定类型参数 明确地。

当我尝试编译上面的代码时。我不太擅长 LINQ 或任何一般代表,我可以获得一些帮助吗?

谢谢!

List<DatsWussup.Models.Message> messages = mc.GetMessages();
List<DatsWussup.Models.JQGridMessage> gridMessages = FormatMessages(messages);

int pageIndex = Convert.ToInt32(page) - 1;
int pageSize = rows;
int totalRecords = gridMessages.Count;
int totalPages = (int)Math.Ceiling((float)totalRecords / (float)pageSize);

var questions = gridMessages
    .OrderBy(sidx + " " + sord)
    .Skip(pageIndex * pageSize)
    .Take(pageSize);

So I am following along with the JqGrid and MVC guide here : http://haacked.com/archive/2009/04/14/using-jquery-grid-with-asp.net-mvc.aspx and in the step where he adds sorting/paging, I took the above code from the blog.

Now, you can probably see what I am trying to do just from looking at the code, especially if you are familiar with working with JqGrids and MVC together. However, I'm getting this error:

The type arguments for method 'System.Linq.Enumerable.OrderBy(System.Collections.Generic.IEnumerable,
System.Func)' cannot be
inferred from the usage. Try
specifying the type arguments
explicitly.

When I try to compile the above code. I'm not very good with LINQ or any delegates in general, could I get a little help?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小兔几 2024-11-07 11:16:08

OrderBy() 接受 Func 委托、表达式 Expression> 或者如果您有DLINQ,一个字符串。该博客提到您需要 DLINQ 并链接到下载页面和< a href="http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx" rel="nofollow ">ScottGu 的文章。显然你没有它。

下载它,将 LinqSamples\DynamicQuery\DynamicQuery\Dynamic.cs 添加到您的项目中并使用 System.Linq.Dynamic 命名空间,您就可以使用它了。

OrderBy() takes either a Func<TSource, TKey> delegate, an expression Expression<Func<TSource, TKey>> or if you have DLINQ, a string. The blog mentions that you need DLINQ and links to the download page and ScottGu's article. Apparently you don't have it.

Download it, add LinqSamples\DynamicQuery\DynamicQuery\Dynamic.cs to your project and use the System.Linq.Dynamic namespace and it should be made available to you.

带刺的爱情 2024-11-07 11:16:08

OrderBy 需要一个 lambda 表达式,可能是这样的:

var questions = gridMessages
    .OrderBy(m => m.sidx + " " + m.sord)
    .Skip(pageIndex * pageSize)
    .Take(pageSize);

OrderBy is expecting a lambda expression, maybe something like this:

var questions = gridMessages
    .OrderBy(m => m.sidx + " " + m.sord)
    .Skip(pageIndex * pageSize)
    .Take(pageSize);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文