2种写法有什么区别,有哪位高手知道,能解释一下吗

2种写法有什么区别,有谁知道,能解释一下吗?
        static void Main(string[] args)
        {
            List<string> list = new List<string>() { "Mike", "Rose", "Steve" };
            var rst = list.Find(p => p.Length == 5).FirstOrDefault();//返回Char类型,“S”,为什么?

            var rst2 = list.Find((p) => { return p.Length == 5; });//返回结果正确“Steve”

            Console.WriteLine(rst);
            Console.WriteLine(rst2);
            Console.ReadKey();
        }

======================
为什么2种写法,得到的结果不一样,高人能解释一下吗?
------解决思路----------------------
list.Find(p => p.Length == 5) 已经得到Steve了,再来个FirstOrDefault自然就是S了。
------解决思路----------------------
你这两种写法都不一样,第一个是find后再firstordefault,第二个只有find,结果不一样不很正常

list.Find() 返回的是第一个命中的item,根据你上面写的来说,这个item的类型是string类型,所以list.Find()执行后会返回一个string类型的值,然后你对 string 进行 firstOrDefault,就是取它的首个字符,即s