我正在使用 LINQ orderby 语句来选择带有子表的父表。现在我想在包括父表和子表在内的所有字段中应用 orderby。我如何使用动态列名来实现这一点。请帮助我...这是我在这里使用的代码。
result = (from p in StudentDB.Student.Include("Student_addr")
where (p.full_nm.Contains(searchCriteria.Name))
select p);
现在我正在调用一个扩展方法来应用 orderby ...
var stuType = typeof(Student);
var addressType = typeof(Student_addr);
list = result.Order<Student>(stuType , addressType ,searchCriteria.sortColumn, searchCriteria.sortCondition);
return list.Take(searchCriteria.reccount).ToList();
扩展方法....
public static IQueryable<T> Order<T>(this IQueryable<T> items, Type stuType , Type addressType, string sortColumn, string sortOrder)
{
var typeOfT = addressType;
var parameter = Expression.Parameter(typeOfT, "parameter");
var propertyType = typeOfT.GetProperty(sortColumn).PropertyType;
var propertyAccess = Expression.PropertyOrField(parameter, sortColumn);
var orderExpression = Expression.Lambda(propertyAccess, parameter);
Expression expression =null;
if (sortOrder == "Desc")
{
expression=Expression.Call(typeof(Queryable), "OrderByDescending", new Type[] { stuType , propertyType }, items.Expression, Expression.Quote(orderExpression));
}
else
{
expression = Expression.Call(typeof(Queryable), "OrderBy", new Type[] { stuType , propertyType }, items.Expression, Expression.Quote(orderExpression));
}
return items.Provider.CreateQuery<T>(expression);
}
当我在子表列名上运行时,我收到以下错误:
类型“System.Linq.Queryable”上没有通用方法“OrderBy”与提供的类型参数和参数兼容。如果方法是非泛型的,则不应提供类型参数。
提前致谢...