Linq Select投影无法应用于单个记录

sup*_*y71 2 c# linq

我正在尝试从字符串数组返回年份,如果它包含任何匹配的年份.

GetYear()扩展方法如下:

public static int GetYear(this string me)
{
  for (int i = 1971; i <= DateTime.Now.Year; i++)
  {
    if (me.Equals(i.ToString()))
    {
      return i;
    }
  }
  return -1;
}
Run Code Online (Sandbox Code Playgroud)

这有效

string[] splitString = me.Split(' ');
var year = splitString.Select(x => x.GetYear()).FirstOrDefault(x => x > 0);
Run Code Online (Sandbox Code Playgroud)

但事实并非如此

string[] splitString = me.Split(' ');
var year = splitString.FirstOrDefault(x => x.GetYear() > 0).Select(x => x.GetYear());
Run Code Online (Sandbox Code Playgroud)

我想知道为什么它不起作用,因为Select <>()应该是投影权?

提前致谢.

Bra*_*eld 6

FirstOrDefault 返回一个元素 IEnumerable

当它在a的第二种情况下使用时string[],它返回一个string

使用Select上一个string项目的字符串的每个字符,而您的扩展方法不存在char类型