私は動的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のタイプを設定する方法はありますか?
動的なLinq拡張メソッドがすべてを処理してくれるようです。やりすぎでした。
var result = from item in table.Where("owner = \"joe\"").OrderBy("inserted") select item;
result.ToList().ForEach(m => Console.WriteLine("inserted=" + m.Inserted + "."));