使用LINQ </t>对List <t>进行排序

时间:2011-04-10 18:28:43

标签: c# .net linq list sorting

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或任何代表都不太满意,我可以得到一些帮助吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

OrderBy()使用Func<TSource, TKey>委托,表达式Expression<Func<TSource, TKey>>或者如果您有DLINQ,则为字符串。该博客提到您需要DLINQ并指向download pageScottGu's article的链接。显然你没有它。

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

答案 1 :(得分:0)

OrderBy期待一个lambda表达式,可能是这样的:

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