现在有一系列员工信息,使用Linq进行相关操作
代码初始化
初始添加20位员工信息
class Employee
{
public long id { get; set; }
public string name { get; set; }
public int age { get; set; }
public bool gender { get; set; }
public int salary { get; set; }
public override string ToString() {
string employeeString =
string.Format("" +
"ID: {0}," +
"Name: {1}, " +
"Age: {2}, " +
"Gender: {3}, " +
"Salary: {4}", id, name, age, gender ? "Male" : "Female",
salary);
return employeeString;
}
}
internal class Program
{
private static void Main(string[] args)
{
List<Employee> employeeList = new List<Employee>();
Random random = new Random();
for (int i = 1; i <= 20; i++)
{
Employee employee = new Employee
{
id = i,
name = "Employee" + i,
age = random.Next(20,60),
gender = i % 2 == 0,
salary = random.Next(5000,20000)
};
employeeList.Add(employee);
}
}
}
语法
where
where: 输出年龄大于30的员工信息
Count
count : 获取列表长度
无参格式:
有参格式:
Any
any : 至少有一条满足条件
Single
Single : 有且只有一条满足要求的数据
当满足条件的数据不为1条时,会抛出如下异常:
符合条件的数据大于1条时:
数据不存在时:
SingleOrDefault:最多只有一条满足要求数据
存在一条符合条件的数据时:
不存在符合条件的数据时:
存在多条符合条件的数据时:
First:至少有一条,返回第一条
存在多条符合条件的数据时:
不存在符合条件的数据时:
FirstOrDefault:返回第一条或者默认值
存在多条符合条件的数据时:
不存在符合条件的数据时:
Order
Order:对数据正序排序
OrderByDesceding: 倒序排序
Guid.NewGuid:随机排序
ThenBy:分组排序
Skip and Take
Skip(n):跳过n条数据
Take(n):获取n条数据
筛选出年龄大于30岁的员工,
并按照升序排序,并取出前五条数据
Max
字符串比较大小
Average
GroupBy
按照性别分组,分别打印组内内容
可使用var自动推断数据类型
按照性别分组,分别查询最高工资
Select
投影:把集合中的每一项转化为另外一种类型
类型转换
新增Person类
将Employee转化为Person
优化:可以不用新增Person类,而自定义数据属性
链式调用
可结合上述语句进行分组聚合
按照性别分组,查询id大于2的用户个数,平均工资