0

System.Linq.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;
        }
    }
}
4

1 に答える 1

0

System.Linq.Dynamicプロジェクトを使用していると仮定します。メソッドが存在しないため、メソッドが見つかりません。

1) GroupBy フォーム System.Linq.Dynamic:

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

このメソッドには 3 つのパラメーターが必要で、コードでは 2 つを指定します。指定する必要がありますelementSelector

2) メソッドOrderByDescendingは、そのライブラリのソースでさえ宣言されていません。非ジェネリックを使用しているため、System.Linqどちらも役に立ちませんIQueryable。すべての拡張メソッドは、厳密に型指定されたクエリに対してのみ提供されます。

于 2013-10-17T11:17:35.727 に答える