LINQ 无结果时,返回值如何?
List<int> list = new List<int>(); var a = from o in list where o == 3 select o; Console.WriteLine(a.Count());
找不到时,返回结果不是 null。要判断有没有结果,用 a.Count()。
Where 无结果时,返回值如何?
Where 无结果时,跟 LINQ 一样的。因为 Where 本身就是 LINQ 的特定版本。
Find 无结果时,返回值如何?
List<int> list = new List<int>(); var a = list.Find(m => m == 3); Console.WriteLine(a); // 结果为 0 List<int?> list = new List<int?>(); var a = list.Find(m => m == 3); Console.WriteLine(a); // 结果为 nullable 的 int,与 null 不同,它可以使用其方法属性,也就是说也可以写作 a.ToString()。Write 出来为零长度字符串。 List<string> list = new List<string>(); var a = list.Find(m => m == "3"); Console.WriteLine(a == null); // True Console.WriteLine(a); // 由于是 null,所以Write 出来是零长度字符串。 Console.WriteLine(a + ""); // 由于是 null,所以Write 出来是零长度字符串。 Console.WriteLine(a.ToString()); // ToString() 与 + "" 不同,如果对象为 null,这里不能调用 ToString(),所以这里触发异常。
Find 返回对应类型的默认值。
相关阅读
LINQ 的 Min、Max、Average 遇到序列不包含元素时