首页 新闻 搜索 专区 学院

如何根据string生成lambda方法?

0
悬赏园豆:10 [已解决问题] 解决于 2015-08-25 20:27

如何根据string生成lambda方法?或者类似实现方法?

public static void Test()
{
var data = new Info { id = 1, name = "test", birthday = DateTime.Now };
string[] props = { "id", "birthday" };//可变
var fn = "(Info info)=>info." + string.Join("+info.", props);
var lambda=???
var str = lambda(data);
}

public class Info
{
public int id { get; set; }
public string name { get; set; }
public DateTime birthday { get; set; }
}

C#
木龙哥的主页 木龙哥 | 初学一级 | 园豆:144
提问于:2015-08-18 17:14
< >
分享
最佳答案
0

using System.Linq.Expressions;
using System.Linq.Dynamic;

public static void Test()
        {
            var data = new Info { id = 1, name = "test", birthday = DateTime.Now };
            string[] props = { "id", "birthday" };//可变
            //var fn = "info." + string.Join("+info.", props);//注释掉是因为 id 和 birthday 类型无法相加
            var fn = "Info.id.ToString()+Info.birthday.ToString()";//这里只是举例,具体可以自己拼写可运行的动态条件
            var p = Expression.Parameter(typeof(Info), "Info");
            var lambda = System.Linq.Dynamic.DynamicExpression.ParseLambda(new[] { p },typeof(string), fn);

            var str = lambda.Compile().DynamicInvoke(data) ;
        }

System.Linq.Dynamic.dll 下载地址:https://github.com/kahanu/System.Linq.Dynamic

收获园豆:10
clarlespeng | 菜鸟二级 |园豆:469 | 2015-08-19 10:12
其他回答(2)
0

Expression<Func<T, bool>>   你需要这个。

贫民窟大侠 | 园豆:4276 (老鸟四级) | 2015-08-18 17:16

大神,能把表达式写出来吗?

支持(0) 反对(0) 木龙哥 | 园豆:144 (初学一级) | 2015-08-18 17:19
0

 Expression<Func<ImportOrder, bool>> expr = i => i.Active == 0这种形式,这是委托的写法,你去了解下委托的3种写法,明白委托是什么了,就很好写了

稳稳的河 | 园豆:4216 (老鸟四级) | 2015-08-18 17:40

能为能把实现写出来?

支持(0) 反对(0) 木龙哥 | 园豆:144 (初学一级) | 2015-08-18 18:57

@木龙哥: 这不就是实现?还是你去看看语法吧

支持(0) 反对(0) 稳稳的河 | 园豆:4216 (老鸟四级) | 2015-08-18 21:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册