Usiłuję zbudować wyrażenie sortowania i napisałem kod, który sortuje moją listę stosując jedną właściwość.zbudować wyrażenie z wieloma sortowania
Ale muszę uporządkować go najpierw przez jedną właściwość, po drugie przez inny obiekt i tak dalej.
Chodzi mi o to, że chcę zbudować wyrażenie, które zaimplementuje coś takiego: students.OrderBy(fistExpression.Compile()).ThenBy(secondImpression.Complie()).ThenBy(thirdExpression.Compile())
.
Więc jak dynamicznie umieścić te metody ThenBy
?
Oto mój kod:
Type studentType = typeof(Student);
ParameterExpression studentParam = Expression.Parameter(studentType, "x");
MemberInfo ageProperty = studentType.GetProperty("Age");
MemberExpression valueInNameProperty =
Expression.MakeMemberAccess(studentParam, ageProperty);
Expression<Func<Student, int>> orderByExpression =
Expression<Func<Student, int>>.Lambda<Func<Student, int>>(valueInNameProperty, studentParam);
var sortedStudents = students.OrderBy(orderByExpression.Compile());
dla wyjaśnienia - szukasz sposobu na zbudowanie pojedynczego wyrażenia można przekazać .OrderBy która będzie replikować funkcjonalność przechodząc serię wyrażeń .OrderBy i .ThenBy, CO prawda? –
Dupe http://stackoverflow.com/questions/41244/dynamic-linq-orderby – aquinas