'System.Linq.IQueryable'不包含'GroupBy'的定义

时间:2013-10-17 10:56:42

标签: c# linq iqueryable

我遇到了一个奇怪的问题,我正在编写一个小方法来使用System.Linq.Dynamic类来查询对象列表,尽管我认为我的问题不在于Dynamic名称空间。出于某种原因,GroupBy和OrderByDescending无法找到。我已经有了System.Linq的引用,这是我最初认为会导致这个...奇怪的是它正在寻找OrderBy和其他Linq方法..我的代码如下。

using System;
using System.Collections.Generic;
using System.Linq.Dynamic;
using System.Linq;
using System.Web;

namespace MvcTemplate.jrSite.Core
{
    public static class DynamicQuery
    {
        public static IQueryable Query(IQueryable items, string where, string select, string groupby, string orderby, string orderbydesc, int take)
        {
            var ret = items;

            if (where != null && where.Length != 0)
            {
                ret = ret.Where(where);
            }

            if (select != null && select.Length != 0)
            {
                ret = ret.Select(select);
            }

            if (groupby != null && groupby.Length != 0)
            {
                ret = ret.GroupBy(groupby);
            }

            if (orderby != null && orderby.Length != 0)
            {
                ret = ret.OrderBy(orderby);
            }

            if (orderbydesc != null && orderbydesc.Length != 0)
            {
                ret = ret.OrderByDescending(orderbydesc);
            }

            return ret;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我假设你正在使用System.Linq.Dynamic项目。找不到您的方法,因为它们不存在。

1)GroupBy表格System.Linq.Dynamic:

public static IQueryable GroupBy(this IQueryable source, 
    string keySelector, string elementSelector, params object[] values) {

此方法需要三个参数,而您的代码提供两个 - 您必须提供elementSelector

2)方法OrderByDescending甚至没有在该库的源中声明。由于您使用非通用System.LinqIQueryable也无法帮助您。所有扩展方法仅适用于强类型查询。