1

すべてtelerikgridの列を および でソートできる がascありdescます。これで、グリッドにlistバインドするオブジェクトがあり、列にバインドする必要があります。ここでは、並べ替えのために列名と式を渡しています。datasourcesort

//コード

public List<TelerikBookingRequestingColumns> Select(int startRowIndex, int maximumRows, string sortExpressions, List<GridFilterExpression> filterExpressions)
        {
            int numberOfObjectsPerPage = maximumRows;

            List<TelerikBookingRequestingColumns> objList = new List<TelerikBookingRequestingColumns>();
            objList.AddRange(list);

            if (!String.IsNullOrEmpty(sortExpressions))
            {
                string firstExpression = sortExpressions.Split(',')[0];

                var queryResultorderby = (from listObject in objList
                                          orderby firstExpression 
                                          select listObject);   

               objList= queryResultorderby.ToList<TelerikBookingRequestingColumns>();
            }

            var queryResultPage = (from listObject in objList
               .Skip(startRowIndex)
               .Take(numberOfObjectsPerPage)
                                   select listObject);

            return queryResultPage.ToList<TelerikBookingRequestingColumns>();



        }

上記のコードfirstExpressionでは、列名と式を意味する (empid asc) または (empid desc) のようになりsortます。しかし、これは機能しません。

どうすればこれを達成できますか?

4

1 に答える 1

2

orderbyには、キー セレクターにラムダが必要です。

public static IOrderedEnumerable<TSource> OrderBy<TSource, TKey>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector
)

しかし、単純な文字列を渡そうとしています。これは機能しません。文字列に基づいて結果を並べ替えたい場合は、Dynamic Linqを使用してみてください。


NuGet からSystem.Linq.Dynamicを取得し、この方法で並べ替えを適用します ( firstExpression がpropertyname + asc/descのように見えると仮定します)。

var firstExpression =  "empid asc";
var queryResultorderby = objList.AsQueryable()
                                .OrderBy(firstExpression);
于 2013-07-11T10:30:39.167 に答える