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);