下面代碼編譯不通過。。

/// <summary>
/// 根據指定屬性名稱對序列進行排序
/// </summary>
/// <typeparam name="T">source中的元素的型別</typeparam>
/// <param name="source">一個要排序的值序列</param>
/// <param name="property">屬性名稱</param>
/// <param name="descending">是否降序</param>
/// <returns></returns>
public static IEnumerable<T> OrderBy<T>(this IEnumerable<T> source, string property, bool descending) where T : class
{
ParameterExpression param = Expression.Parameter(typeof(T), "c");
PropertyInfo pi = typeof(T).GetProperty(property);
MemberExpression selector = Expression.MakeMemberAccess(param, pi);
LambdaExpression le = Expression.Lambda(selector, param);
string methodName = (descending) ? "OrderByDescending" : "OrderBy";
MethodCallExpression resultExp = Expression.Call(typeof(Queryable), methodName, new Type[] { typeof(T), pi.PropertyType }, source.Expression, le);
return source.Provider.CreateQuery<T>(resultExp);
}
uj5u.com熱心網友回復:
IEnumerable<T>???????????????
既然要做運算式,請使用 IQueryable<T> 而不是IEnumerable<T>
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/248793.html
