我有一个lambda表达式,我想找回匹配的值。这是一个例子:
if (Keywords.Any(s => sourceString.Contains(" " + s.Trim())))
return s;
答案 0 :(得分:6)
假设您只想要第一个匹配的结果(假设您使用Any
),则可以将First / FirstOrDefault与过滤器一起使用。鉴于可能没有匹配,我建议使用FirstOrDefault
(First
会在这种情况下抛出异常。)
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
的低效查询。如果是这种情况,请调查全文索引。