gpt4 book ai didi

c# - 动态 LINQ 查询

转载 作者:行者123 更新时间:2023-11-30 15:49:20 25 4
gpt4 key购买 nike

是否可以在运行时创建 Linq 查询。使用可以转换为 Linq 查询的 xml 规则。

最佳答案

最终,是的;但这并不简单,您需要:

  • 学习表达式 API
  • 使用预滚动的动态 LINQ 库(来自示例下载)

如果你想选择第一个选项,那么你需要创建自己的 lambda;想象一下,例如,你有类似的东西(在这里制作东西......):

<Filters>
<Add Prop="Foo">My filter value</Add>
</Filters>

然后你需要做类似的事情:

XElement filters = ...; // the "Filters" element
IQueryable<Customer> query = ...; // your raw (unfiltered) query
foreach(var filter in filters.Elements("Add")) {
var param = Expression.Parameter(typeof(Customer), "row");
var body = Expression.Equal(
Expression.PropertyOrField(param, (string)filter.Attribute("Prop")),
Expression.Constant(filter.Value, typeof(string)));
query = query.Where(Expression.Lambda<Func<Customer, bool>>(
body, param));
}

上面(对于每个“添加”元素)创建了一个 lambda,用于将给定成员过滤为提供的值(假定为字符串,但您当然可以进行任何转换等)。所有其他操作都可用,但这表明效果很小。请注意,query 在循环中受到限制。

关于c# - 动态 LINQ 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1693526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com