.net Linq

104 阅读1分钟

现在有一系列员工信息,使用Linq进行相关操作

代码初始化

初始添加20位员工信息

image.png

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的员工信息

image.png

Count

count : 获取列表长度

无参格式:

image.png

有参格式:

image.png

Any

any : 至少有一条满足条件

image.png

Single

Single : 有且只有一条满足要求的数据

image.png

当满足条件的数据不为1条时,会抛出如下异常:

符合条件的数据大于1条时:

image.png

数据不存在时:

image.png

SingleOrDefault:最多只有一条满足要求数据

存在一条符合条件的数据时:

image.png

不存在符合条件的数据时:

image.png

存在多条符合条件的数据时: image.png

First:至少有一条,返回第一条

存在多条符合条件的数据时:

image.png

不存在符合条件的数据时:

image.png

FirstOrDefault:返回第一条或者默认值

存在多条符合条件的数据时:

image.png

不存在符合条件的数据时:

image.png

Order

Order:对数据正序排序

image.png

OrderByDesceding: 倒序排序

image.png

Guid.NewGuid:随机排序

image.png

ThenBy:分组排序

image.png

Skip and Take

Skip(n):跳过n条数据

Take(n):获取n条数据

image.png

筛选出年龄大于30岁的员工,

并按照升序排序,并取出前五条数据

image.png

Max

image.png

image.png

字符串比较大小

image.png

Average

image.png

GroupBy

按照性别分组,分别打印组内内容

image.png

可使用var自动推断数据类型

image.png

按照性别分组,分别查询最高工资

image.png

Select

投影:把集合中的每一项转化为另外一种类型

image.png

image.png

类型转换

新增Person类

image.png

将Employee转化为Person

image.png

优化:可以不用新增Person类,而自定义数据属性

image.png

链式调用

可结合上述语句进行分组聚合

image.png

按照性别分组,查询id大于2的用户个数,平均工资

image.png

另一种写法

image.png