First/FirstOrDefault其实返回集合中的一个元素,其实质就是在SQL语句中加TOP (1),多与OrderBy()组合使用。
First()两种方法:
- First()返回结果集中第一个匹配的元素,如果找不到匹配元素会抛出异常。
- First(Predicate<TSource>)基于你提供的条件返回结果集中第一个匹配的元素,如果找不到匹配元素会抛出异常。
FirstOrDefault()两种方法:
- FirstOrDefault()返回结果集中第一个匹配的,如果找不到会返回默认的元素default(TSource)。
- FirstOrDefault(Predicate<TSource>)基于你提供的条件返回结果集中第一个匹配的,如果找不到会返回默认的元素default(TSource)。
Single()两种方法:
- Single()返回结果集中唯一的元素,如果找不到匹配元素会抛出异常,如果多于一个,也抛出异常。
- Single(Predicate<TSource>)基于你提供的条件回结果集中唯一的元素,如果找不到匹配元素会抛出异常,如果多于一个,也抛出异常。
SingleOrDefault()两种方法:
- SingleOrDefault()返回结果集中唯一的元素,如果找不到会返回默认的元素default(TSource),如果多于一个,抛出异常。
- SingleOrDefault(Predicate<TSource>)基于你提供的条件返回结果集中唯一的元素,如果找不到会返回默认的元素default(TSource),如果多于一个,抛出异常。
一个员工安排到一辆车上,一辆车可以有很多员工,车牌号和员工号是一对多的关系。
员工类
public class Employee
{
/// <summary>
/// 车牌号
/// </summary>
public int CarNo { get; set; }
/// <summary>
/// 员工号
/// </summary>
public string EmployeeNo { get; set; }
/// <summary>
/// 描述
/// </summary>
public string Description { get; set; }
/// <summary>
/// 年龄
/// </summary>
public int Age { get; set; }
}
获取员工数据方法
public static List<Employee> GetList()
{
return new List<Employee>()
{
new Employee(){ CarNo=1,EmployeeNo="NO-1",Description ="广州分公司",Age=21},
new Employee(){ CarNo=2,EmployeeNo="NO-2",Description ="惠州分公司",Age=30},
new Employee(){ CarNo=3,EmployeeNo="NO-3",Description ="东莞分公司",Age=27},
new Employee(){ CarNo=4,EmployeeNo="NO-4",Description ="广州分公司",Age=28},
new Employee(){ CarNo=3,EmployeeNo="NO-4",Description ="东莞分公司",Age=52},
new Employee(){ CarNo=1,EmployeeNo="NO-5",Description ="深圳分公司",Age=18},
new Employee(){ CarNo=1,EmployeeNo="NO-6",Description ="中山分公司",Age=21},
new Employee(){ CarNo=2,EmployeeNo="NO-7",Description ="广州分公司",Age=31},
new Employee(){ CarNo=5,EmployeeNo="NO-8",Description ="佛山分公司",Age=19},
new Employee(){ CarNo=6,EmployeeNo="NO-9",Description ="深圳分公司",Age=20}
};
}
First/FirstOrDefault
获取年龄大于25岁的所有员工信息中年龄最小的员工信息
var employeeList = Employee.GetList();
var list = employeeList.Where(x => x.Age > 25).OrderBy(x => x.Age);
StringBuilder sb = new StringBuilder();
sb.Append("得到的结果集:<br/>");
foreach (var item in list)
{
sb.AppendFormat("员工号{0},描述:{1},年龄:{2}<br/> ", item.EmployeeNo, item.Description, item.Age);
}
sb.Append("<br/><br/>");
sb.Append("结果集的第一个元素:<br/>");
var em = list.First(x => x.Age > 25);
sb.AppendFormat("员工号{0},描述:{1},年龄:{2}<br/> ", em.EmployeeNo, em.Description, em.Age);
输出结果:
得到的结果集:
员工号NO-3,描述:东莞分公司,年龄:27
员工号NO-4,描述:广州分公司,年龄:28
员工号NO-2,描述:惠州分公司,年龄:30
员工号NO-7,描述:广州分公司,年龄:31
员工号NO-4,描述:东莞分公司,年龄:52
结果集的第一个元素:
员工号NO-3,描述:东莞分公司,年龄:27
网友评论