gpt4 book ai didi

c# - Dynamic Linq - 在运行时设置 orderby 表达式类型

转载 作者:行者123 更新时间:2023-11-30 22:49:47 27 4
gpt4 key购买 nike

我正在使用动态 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 + "."));

编译器对 delcaring 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 + "."));

关于c# - Dynamic Linq - 在运行时设置 orderby 表达式类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/953911/

27 4 0
文章推荐: python - ** 或 pow() 不支持的操作数类型 : 'method' and 'int'
文章推荐: python - 基于 Django 中聚合结果的额外列
文章推荐: python - BeautifulSoup - 如何从 html 类中获取所有
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com