gpt4 book ai didi

C# Lambda 表达式 - 从字符串获取属性值

转载 作者:行者123 更新时间:2023-12-02 20:04:00 26 4
gpt4 key购买 nike

考虑以下 lambda 表达式:

IQueryable<Product> query = query.Where(x => x.ProductName.Contains("P100"));

我需要将上面的代码转换为如下所示:

IQueryable<Product> query = query.Where(x => x.GetPropertyValue("ProductName").Contains("P100"));

这里我添加了一个虚拟方法 GetPropertyValue("ProductName")解释要求。在上面的代码中,属性应该在运行时解析。换句话说,我需要从字符串值访问该属性,例如 "ProductName"

我该怎么做?

最佳答案

var parameterExp = Expression.Parameter(typeof(Product), "type");
var propertyExp = Expression.Property(parameterExp, propertyName);
MethodInfo method = typeof(string).GetMethod("Contains", new[] { typeof(string) });
var someValue = Expression.Constant(propertyValue, typeof(string));
var containsMethodExp = Expression.Call(propertyExp, method, someValue);

Expression<Func<Product, bool>> predicate = Expression.Lambda<Func<T, bool>>
(containsMethodExp, parameterExp);


var query = query.Where(predicate);

关于C# Lambda 表达式 - 从字符串获取属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36245147/

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