我在有关为Where查询构建表达式树的问题上找到了非常好的答案。
Expression.Lambda 和运行时的查询生成,最简单的“Where”示例 https://stackoverflow.com/questions/8315819/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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)