为了账号安全,请及时绑定邮箱和手机立即绑定

C# 如何为 List<T> 上的 Exists() 构建表达式树

C# 如何为 List<T> 上的 Exists() 构建表达式树

C#
牛魔王的故事 2022-12-04 13:07:27
List<string> strlist = new List<string> { "one","two", "three" };string somevalue = "two";var result = strlist.Exists(e2 => e2 == somevalue);如何将最后一条语句 Exists() 转换为表达式树?
查看完整描述

1 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

您可以从 lambda 表达式创建一个表达式树,然后将其编译成一个函数,然后可以使用strlistsomevalue参数调用该函数,如下所示:

var strlist = new List<string> { "one", "two", "three" };

var somevalue = "two";


Expression<Func<List<string>, string, bool>> expression = (list, value) => 

    list.Exists(item => item == value);


Func<List<string>, string, bool> exists = expression.Compile();


bool result = exists(strlist, somevalue);

或者您可以在一行中完成所有操作,但它有点难以阅读:


var exists = ((Expression<Func<List<string>, string, bool>>)

    ((list, value) => list.Exists(item => item == value))).Compile();

但最后,这样做不是更简单:


bool result = strlist.Contains(somevalue);


查看完整回答
反对 回复 2022-12-04
  • 1 回答
  • 0 关注
  • 127 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信