FirstOrDefault()返回字符串的第一个字母

Shi*_*hiv 0 c# linq lambda

我有一个人物

        people.Add(new Person { FirstName = "Tim", Id = 1, LastName = "Corey" });
        people.Add(new Person { FirstName = "Sue", Id = 2, LastName = "Storm" });
        people.Add(new Person { FirstName = "Bilbo", Id = 3, LastName = "Baggins" });
Run Code Online (Sandbox Code Playgroud)

我试图通过传递FirstName和LastName来查询它(Tim,Corey)

return people.Where(names => names.FirstName == FirstName && names.LastName == LastName).FirstOrDefault().FirstName;
Run Code Online (Sandbox Code Playgroud)

这会将输出返回为

"Tim"
Run Code Online (Sandbox Code Playgroud)

当我在最后添加.FirstOrDefault()时.它带来了奇怪的输出

return people.Where(names => names.FirstName == FirstName && names.LastName == LastName).FirstOrDefault().FirstName.FirstOrDefault();

84 'T'
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释输出是如何产生的.

84'T'

Mat*_*and 6

您所呼叫.FirstOrDefault()FirstName这是一个string.这将导致在.FirstOrDefault()实现上调用IEnumberable<char>.这将导致返回第一个或默认字符string.

数值84显示ASCII值T. http://www.rapidtables.com/code/text/ascii-table.html

  • 由于T是一个`char`,它显示T的ASCII值,即84. ASCII码:https://www.rapidtables.com/code/text/ascii-table.html (2认同)