Я использую динамический Linq и у меня работают предложения where. Сейчас я ищу, чтобы добавить предложения orderby, но у меня проблема с возможностью установить тип динамического выражения. Ниже рабочий код, который у меня есть:
class MyClass {
public string Owner;
public DateTime Inserted;
}
Expression<Func<MyClass, bool>> whereExpression = DynamicExpression.ParseLambda<MyClass, bool>("owner = \"joe\"");
Expression<Func<MyClass, DateTime>> orderExpression = DynamicExpression.ParseLambda<MyClass, DateTime>("inserted");
var result = from item in table.Where(whereExpression).OrderBy(orderExpression) select item;
result.ToList().ForEach(m => Console.WriteLine("inserted=" + m.Inserted + "."));
Поскольку мне нужно использовать разные свойства в выражении orderby, я хотел бы использовать что-то вроде приведенного ниже кода, который не работает.
Expression<Func<MyClass, bool>> whereExpression = DynamicExpression.ParseLambda<MyClass, bool>("owner = \"joe\"");
Type orderType = typeof(DateTime);
Expression<Func<MyClass, orderType>> orderExpression = DynamicExpression.ParseLambda<MyClass, orderType>("inserted");
var result = from item in table.Where(whereExpression).OrderBy(orderExpression) select item;
result.ToList().ForEach(m => Console.WriteLine("inserted=" + m.Inserted + "."));
Компилятор недоволен строкой, разделяющей выражение orderExpression. Есть ли способ установить тип Func во время выполнения?