C#lambda表达式返回值

时间:2014-07-29 12:02:17

标签: c# lambda

我有一个lambda表达式,我想找回匹配的值。这是一个例子:

if (Keywords.Any(s => sourceString.Contains(" " + s.Trim())))
          return s;

4 个答案:

答案 0 :(得分:6)

假设您只想要第一个匹配的结果(假设您使用Any),则可以将First / FirstOrDefault与过滤器一起使用。鉴于可能没有匹配,我建议使用FirstOrDefaultFirst会在这种情况下抛出异常。)

var matched = Keywords.FirstOrDefault(s => sourceString.Contains(" " + s.Trim()));

答案 1 :(得分:2)

Keywords.First(s => sourceString.Contains(" " + s.Trim()))

根据您想要的行为,查看Single,SingleOrDefault,First或FirstOrDefault扩展方法。

如果您想获得匹配项目的集合:

Keywords.Where(s => sourceString.Contains(" " + s.Trim())).ToList()

答案 2 :(得分:1)

您可以使用.First.FirstOrDefault

但如果找不到任何内容,.First将抛出异常。

var s = Keywords.FirstOrDefault(keyword => sourceString.Contains(" " + keyword .Trim())); 
return s;

答案 3 :(得分:0)

怎么样:

return Keywords.FirstOrDefault(s => sourceString.Contains(" " + s.Trim()));

如果找到则返回匹配,如果找不到,则返回null

请注意针对数据库执行此操作 - .Contains可能会转换为使用LIKE的低效查询。如果是这种情况,请调查全文索引。