First/FirstOrDefault其實(shí)返回集合中的一個(gè)元素,其實(shí)質(zhì)就是在SQL語句中加TOP (1)奈应,多與OrderBy()組合使用澜掩。
First()兩種方法:
- First()返回結(jié)果集中第一個(gè)匹配的元素,如果找不到匹配元素會(huì)拋出異常杖挣。
- First(Predicate<TSource>)基于你提供的條件返回結(jié)果集中第一個(gè)匹配的元素肩榕,如果找不到匹配元素會(huì)拋出異常。
FirstOrDefault()兩種方法:
- FirstOrDefault()返回結(jié)果集中第一個(gè)匹配的程梦,如果找不到會(huì)返回默認(rèn)的元素default(TSource)点把。
- FirstOrDefault(Predicate<TSource>)基于你提供的條件返回結(jié)果集中第一個(gè)匹配的,如果找不到會(huì)返回默認(rèn)的元素default(TSource)屿附。
Single()兩種方法:
- Single()返回結(jié)果集中唯一的元素郎逃,如果找不到匹配元素會(huì)拋出異常,如果多于一個(gè)挺份,也拋出異常褒翰。
- Single(Predicate<TSource>)基于你提供的條件回結(jié)果集中唯一的元素,如果找不到匹配元素會(huì)拋出異常匀泊,如果多于一個(gè)优训,也拋出異常。
SingleOrDefault()兩種方法:
- SingleOrDefault()返回結(jié)果集中唯一的元素各聘,如果找不到會(huì)返回默認(rèn)的元素default(TSource)揣非,如果多于一個(gè),拋出異常躲因。
- SingleOrDefault(Predicate<TSource>)基于你提供的條件返回結(jié)果集中唯一的元素早敬,如果找不到會(huì)返回默認(rèn)的元素default(TSource),如果多于一個(gè)大脉,拋出異常搞监。
一個(gè)員工安排到一輛車上,一輛車可以有很多員工镰矿,車牌號(hào)和員工號(hào)是一對多的關(guān)系琐驴。
員工類
public class Employee
{
/// <summary>
/// 車牌號(hào)
/// </summary>
public int CarNo { get; set; }
/// <summary>
/// 員工號(hào)
/// </summary>
public string EmployeeNo { get; set; }
/// <summary>
/// 描述
/// </summary>
public string Description { get; set; }
/// <summary>
/// 年齡
/// </summary>
public int Age { get; set; }
}
獲取員工數(shù)據(jù)方法
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("得到的結(jié)果集:<br/>");
foreach (var item in list)
{
sb.AppendFormat("員工號(hào){0},描述:{1}秤标,年齡:{2}<br/> ", item.EmployeeNo, item.Description, item.Age);
}
sb.Append("<br/><br/>");
sb.Append("結(jié)果集的第一個(gè)元素:<br/>");
var em = list.First(x => x.Age > 25);
sb.AppendFormat("員工號(hào){0}绝淡,描述:{1},年齡:{2}<br/> ", em.EmployeeNo, em.Description, em.Age);
輸出結(jié)果:
得到的結(jié)果集:
員工號(hào)NO-3抛杨,描述:東莞分公司够委,年齡:27
員工號(hào)NO-4,描述:廣州分公司怖现,年齡:28
員工號(hào)NO-2,描述:惠州分公司,年齡:30
員工號(hào)NO-7屈嗤,描述:廣州分公司潘拨,年齡:31
員工號(hào)NO-4,描述:東莞分公司饶号,年齡:52
結(jié)果集的第一個(gè)元素:
員工號(hào)NO-3铁追,描述:東莞分公司,年齡:27