Linq C#中的Last()和LastOrDefault()有什么区别?
Last()和LastOrDefault()都将获取值的最后一次出现。但是Last()和LastOrDefault()之间的主要区别在于,如果没有提供的条件的结果数据,Last()将引发异常,而如果没有结果数据,LastOrDefault()将返回默认值(空)。
当我们知道序列将至少包含一个元素时,请使用Last()。当我们不确定数据时,请使用LastOrDefault()。
示例
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
namespace ConsoleApp {
public class Student {
public int Id { get; set; }
public string Name { get; set; }
}
class Program {
static void Main() {
var studentsList = new List<Student> {
new Student {
Id = 1,
Name = "John"
},
new Student {
Id = 2,
Name = "Jack"
},
new Student {
Id = 1,
Name = "Jill"
}
};
var lastOrDefaultStudent = studentsList.LastOrDefault(student => student.Id == 1);
var lastStudent = studentsList.Last(student => student.Id == 1);
Console.WriteLine($"LastOrDefault: {lastOrDefaultStudent.Id} {lastOrDefaultStudent.Name}");
Console.WriteLine($"Last: {lastStudent.Id} {lastStudent.Name}");
Console.ReadLine();
}
}
}输出结果
上面代码的输出是
LastOrDefault: 1 Jill Last: 1 Jill
示例
using System;
using System.Collections.Generic;
using System.Linq;
namespace DemoApplication {
class Program {
static void Main(string[] args) {
try {
var studentsList = new List<Student> {
new Student {
Id = 1,
Name = "John"
},
new Student {
Id = 2,
Name = "Jack"
}
};
var lastOrDefaultStudent = studentsList.LastOrDefault(student => student.Id == 3);
var value = lastOrDefaultStudent == null ? "null" : "";
Console.WriteLine($"LastOrDefault: {value}");
var lastStudent = studentsList.Last(student => student.Id == 3);
}
catch (Exception ex) {
Console.WriteLine($"Last Exception: {ex.Message}");
Console.ReadLine();
}
}
}
public class Student {
public int Id { get; set; }
public string Name { get; set; }
}
}输出结果
上面代码的输出是
LastOrDefault: null Last Exception: Sequence contains no matching element
在此处,学生列表中不存在ID“3”。因此,LastOrDefault()返回空值,而Last()引发异常。
热门推荐
10 毕业谢谢老师祝福语简短
11 女孩自己生日祝福语简短
12 爸妈对宝宝祝福语简短
13 天仓节祝福语简短
14 送给新娘祝福语简短高级
15 升学祝福语简短100个
16 病人的生日祝福语简短
17 餐厅虎年贺卡祝福语简短
18 红包祝福语简短10字