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

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

string somevalue = "two";


var result = strlist.Exists(e2 => e2 == somevalue);

如何将最后一条语句 Exists() 转换为表达式树?


牛魔王的故事
浏览 186回答 1
1回答

函数式编程

您可以从 lambda 表达式创建一个表达式树,然后将其编译成一个函数,然后可以使用strlist和somevalue参数调用该函数,如下所示:var strlist = new List<string> { "one", "two", "three" };var somevalue = "two";Expression<Func<List<string>, string, bool>> expression = (list, value) =>&nbsp;&nbsp; &nbsp; 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>>)&nbsp; &nbsp; ((list, value) => list.Exists(item => item == value))).Compile();但最后,这样做不是更简单:bool result = strlist.Contains(somevalue);
打开App,查看更多内容
随时随地看视频慕课网APP