和SQL命令中的select作用相似但位置不同,查詢表達式中的select及所接子句是放在表達式最后并把子句中的變量也就是結果返回回來。
一個員工安排到一輛車上,一輛車可以有很多員工,車牌號和員工號是一對多的關系。
員工類
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}
};
}
只要得到所有員工的年齡
var employeeList = Employee.GetList();
var list = employeeList.Select(x => x.Age);
StringBuilder sb = new StringBuilder();
foreach (var item in list)
{
sb.AppendFormat("年齡:{0}<br/> ", item);
}
輸出結果
年齡:21
年齡:30
年齡:27
年齡:28
年齡:52
年齡:18
年齡:21
年齡:31
年齡:19
年齡:20
只要得到所有員工的員工號和年齡
var employeeList = Employee.GetList();
var list = employeeList.Select(x => new { x.EmployeeNo, x.Age });
StringBuilder sb = new StringBuilder();
foreach (var item in list)
{
sb.AppendFormat("員工號{0},年齡:{1}<br/> ", item.EmployeeNo, item.Age);
}
或者
使用SELECT和匿名類型返回員工號和年齡的序列,并將員工號重命名為“EmNo ”,年齡重命名為“EmAge ”。
var employeeList = Employee.GetList();
var list = employeeList.Select(x => new { EmNo = x.EmployeeNo, EmAge = x.Age });
StringBuilder sb = new StringBuilder();
foreach (var item in list)
{
sb.AppendFormat("員工號{0},年齡:{1}<br/> ", item.EmNo, item.EmAge);
}
輸出結果
員工號NO-1,年齡:21
員工號NO-2,年齡:30
員工號NO-3,年齡:27
員工號NO-4,年齡:28
員工號NO-4,年齡:52
員工號NO-5,年齡:18
員工號NO-6,年齡:21
員工號NO-7,年齡:31
員工號NO-8,年齡:19
員工號NO-9,年齡:20
輸出員工所有信息,并判斷是否是老員工(年齡大于30歲算老員工)
var employeeList = Employee.GetList();
var list = employeeList.Select(x => new { EmNo = x.EmployeeNo, EmAge = x.Age, IsOld = x.Age > 30 ? "是" : "否" });
StringBuilder sb = new StringBuilder();
foreach (var item in list)
{
sb.AppendFormat("員工號{0},年齡:{1},是否為老員工:{2}<br/> ", item.EmNo, item.EmAge, item.IsOld);
}
輸出結果:
員工號NO-1,年齡:21,是否為老員工:否
員工號NO-2,年齡:30,是否為老員工:否
員工號NO-3,年齡:27,是否為老員工:否
員工號NO-4,年齡:28,是否為老員工:否
員工號NO-4,年齡:52,是否為老員工:是
員工號NO-5,年齡:18,是否為老員工:否
員工號NO-6,年齡:21,是否為老員工:否
員工號NO-7,年齡:31,是否為老員工:是
員工號NO-8,年齡:19,是否為老員工:否
員工號NO-9,年齡:20,是否為老員工:否