我使用动态LINQ到顺序根据结果集上哪一列于过去了。我用这个当用户点击一个表列命令的表。
如果属性IM订货上是一类,这是空码倒下,我希望能够动态排序依据一个字符串,但满足空,如果该属性是一个类。
这是使用System.Linq.Dynamic IM类的代码。
public static IQueryable OrderBy(this IQueryable source, string ordering,
params object[] values)
{
if (source == null) { throw new ArgumentNullException("source"); }
if (ordering == null) { throw new ArgumentNullException("ordering"); }
ParameterExpression[] parameters = new ParameterExpression[1]
{
Expression.Parameter(source.ElementType, "")
};
IEnumerable<DynamicOrdering> enumerable = new ExpressionParser(
parameters, ordering, values).ParseOrdering();
Expression expression = source.Expression;
string str1 = "OrderBy";
string str2 = "OrderByDescending";
foreach (DynamicOrdering dynamicOrdering in enumerable)
{
expression = (Expression) Expression.Call(typeof (Queryable),
dynamicOrdering.Ascending ? str1 : str2, new Type[2]
{
source.ElementType,
dynamicOrdering.Selector.Type
}, new Expression[2]
{
expression,
(Expression) Expression.Quote((Expression) Expression.Lambda(
dynamicOrdering.Selector, parameters))
});
str1 = "ThenBy";
str2 = "ThenByDescending";
}
return source.Provider.CreateQuery(expression);
}
并调用它像这样
if (property.PropertyType == typeof(Sitecore.Data.Items.Item))
{
orderByProperty = property.Name + ".Name";
}
else
{
orderByProperty = property.Name;
}
return tableOrder == TableOrder.az
? projects.OrderBy(orderByProperty + " ascending").ToList()
: projects.OrderBy(orderByProperty + " descending").ToList();
物业有时是一类,如果这是我希望能够通过在类中的字段名为name命令它的情况。 上面的代码工作,但如果该属性是一个类,null,则它倒下。
如何订购一个领域,在结尾处的空项目?