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

时间:2018-09-14 15:45:51

标签: 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" });

我正在尝试通过传递名字和姓氏(蒂姆,科里)来查询它

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

这将返回输出为

"Tim"

当我在末尾添加.FirstOrDefault()时。它带来了奇怪的输出

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

84 'T'

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

  

84'T'

2 个答案:

答案 0 :(得分:6)

您正在.FirstOrDefault()的{​​{1}}上呼叫FirstName。这将导致在string实现中调用.FirstOrDefault()。这将导致返回该IEnumberable<char>中的第一个字符或默认字符。

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

答案 1 :(得分:0)

是-T本质上是string,因此,当您调用IEnumerable<char>时,您将返回FirstOrDefault()中的第一个char