gpt4 book ai didi

c# - 运行时的 Expression.Lambda 和查询生成,嵌套属性 “Where” 示例

转载 作者:太空狗 更新时间:2023-10-29 17:56:59 28 4
gpt4 key购买 nike

我在有关为 Where 查询构建表达式树的问题上找到了非常好的答案。

Expression.Lambda and query generation at runtime, simplest "Where" example

有人可以帮助我并向我展示如何在具有嵌套属性的场景中实现此示例。我的意思是:

var result = query.Where(item => item.Name == "Soap")

有了这个解决方案:

var item = Expression.Parameter(typeof(Item), "item");

var prop = Expression.Property(item, "Name");

var soap = Expression.Constant("Soap");

var equal = Expression.Equal(prop, soap);

var lambda = Expression.Lambda<Func<Item, bool>>(equal, item);

var result = queryableData.Where(lambda);

如何为以下内容构建树?

var result = query.Where(item => item.Data.Name == "Soap").

最佳答案

(此答案最初由 OP 在问题中发布。)

问题可以通过以下方式解决:

var item = Expression.Parameter(typeof(Item), "item");

var dataExpr = Expression.Property(item, "Data");

var prop = Expression.Property(dataExpr, "Name");

var soap = Expression.Constant("Soap");

var equal = Expression.Equal(prop, soap);

var lambda = Expression.Lambda<Func<Item, bool>>(equal, item);

var result = queryableData.Where(lambda);

关于c# - 运行时的 Expression.Lambda 和查询生成,嵌套属性 “Where” 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34270207/

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