任何建议将值存储在lambda表达式中

Hom*_*mam 1 c# lambda inline-code

我正在尝试使用递归的lambda表达式为字符串中单词的计数出现编写一个内联函数.

功能:

Func<string, string, int> getOccurrences = null;
getOccurrences = (text, searchTerm) =>
  text.IndexOf(searchTerm, StringComparison.OrdinalIgnoreCase) == -1
  ? 0
  : getOccurrences(
      text.Substring(
        text.IndexOf(searchTerm, StringComparison.OrdinalIgnoreCase)
        + searchTerm.Length),
      searchTerm) + 1;
Run Code Online (Sandbox Code Playgroud)

问题是我调用了IndexOf两次方法,第一个用于递归中断条件,第二个用于获取添加它的值.

有没有建议打电话一次?

提前致谢.

Ian*_*cer 6

如果您不介意非纯函数lambda,您可以这样做: -

Func<string, string, int> getOccurrences = null;
getOccurrences = (text, searchTerm) => 
{
   int i = text.IndexOf(searchTerm, StringComparison.OrdinalIgnoreCase);
   return i == -1 ? 0 : getOccurrences(i + searchTerm.Length), searchTerm) + 1;
}
Run Code Online (Sandbox Code Playgroud)