C# 中:
List<int> list = new List<int>(); int n = list.Single(m => m == 3); // 异常:序列不包含任何匹配元素 Response.Write(n); List<int> list = new List<int>(); list.Add(3); list.Add(3); int n = list.Single(m => m == 3); // 异常:序列包含一个以上的匹配元素 Response.Write(n); List<int> list = new List<int>(); int n = list.SingleOrDefault(m => m == 3); Response.Write(n); // 0
总结:
找不到 | 找到一个 | 找到多个 | |
Single | 异常 | 返回该元素 | 异常 |
SingleOrDefault | 返回 T 类型对应的默认值* | 返回该元素 | 异常 |
First | 异常 | 返回该元素 | 返回第一个元素 |
FirstOrDefault | 返回 T 类型对应的默认值* | 返回该元素 | 返回第一个元素 |
Last | 异常 | 返回该元素 | 返回最后一个元素 |
LastOrDefault | 返回 T 类型对应的默认值* | 返回该元素 | 返回最后一个元素 |
*
如果 T 是基本类型,找不到返回的是基本类型的默认值,比如 int 为 0。
如果 T 是 DateTime,也是按照基本类型来的,找不到返回的是 0001-1-1。
如果 T 是引用类型,找不到返回 null。