与下面的代码LINQ查询,我没有任何问题进行排序FirstName
和LastName
但我希望能够排序Name
和Code
了。有没有一种解决方案来排序属性,这个属性是一个“复杂的对象”,而不是一个原始的?对财产动态排序依据和复杂的对象
感谢,
我的对象:
public class Person
{
public Language Language { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class Language
{
public string Name { get; set; }
public string Code { get; set; }
}
我有这样的一段代码进行排序:
var type = typeof(T);
var property = type.GetProperty("OrderBy");
var parameter = Expression.Parameter(type, "p");
var propertyAccess = Expression.MakeMemberAccess(parameter, property);
var orderByExp = Expression.Lambda(propertyAccess, parameter);
MethodCallExpression resultExp =
Expression.Call(typeof(Queryable),
"OrderBy",
new Type[] { type, property.PropertyType },
source.Expression,
Expression.Quote(orderByExp));
return source.Provider.CreateQuery<T>(resultExp);
代码中没有子类。名称和代码是您的Person类的属性的属性。 –
@MaurícioLinhares让我重述一下......并不是所有的时间都是“语言”对象,但可以是另一种类型。 –
@ Kris-I:请编辑问题的标题,然后 - 我阅读它也寻找子类。 –