📜  linq 备忘单 - C# (1)

📅  最后修改于: 2023-12-03 15:17:19.962000             🧑  作者: Mango

LINQ 备忘单 - C#

LINQ是语言集成查询(Language Integrated Query)的简称,它为C#语言提供了一种简便的方式来处理数据,同时又不需要使用SQL语言。

LINQ基础操作

首先需要了解一下LINQ的基础操作,共有以下几种:

1. Where

用于筛选满足某个条件的数据项,返回形式为IEnumerable<TSource>

var list = new List<int> { 1, 2, 3, 4, 5 };
var result = list.Where(i => i % 2 == 0);

// 返回结果为2, 4
2. Select

用于对数据进行转换,返回形式为IEnumerable<TResult>

var list = new List<int> { 1, 2, 3 };
var result = list.Select(i => i * 2);

// 返回结果为2, 4, 6
3. OrderBy

用于按照某种规则对数据进行排序,返回形式为IOrderedEnumerable<TSource>

var list = new List<int> { 2, 1, 3 };
var result = list.OrderBy(i => i);

// 返回结果为1, 2, 3
4. GroupBy

用于根据某个字段对数据进行分组,返回形式为IEnumerable<IGrouping<TKey, TSource>>

var list = new List<Student> {
    new Student("Tom", "A"),
    new Student("Jerry", "B"),
    new Student("Marry", "B")
};
var result = list.GroupBy(s => s.ClassName);

// 返回结果为:
// 分组A
// Tom
//
// 分组B
// Jerry
// Marry
LINQ高级操作

除了基础操作,LINQ还提供了一些高级操作,如聚合操作、连接操作、量词操作等。

1. 聚合操作

聚合操作是对一组数据进行计算,最终返回一个值。

1.1 Count

用于计算数据项的个数。

var list = new List<int> { 1, 2, 3, 4 };
var result = list.Count();

// 返回结果为4

1.2 Sum

用于计算数据项的和。

var list = new List<int> { 1, 2, 3, 4 };
var result = list.Sum();

// 返回结果为10

1.3 Average

用于计算数据项的平均值。

var list = new List<int> { 1, 2, 3, 4 };
var result = list.Average();

// 返回结果为2.5

1.4 Max

用于计算数据项的最大值。

var list = new List<int> { 1, 2, 3, 4 };
var result = list.Max();

// 返回结果为4

1.5 Min

用于计算数据项的最小值。

var list = new List<int> { 1, 2, 3, 4 };
var result = list.Min();

// 返回结果为1
2. 连接操作

连接操作是将两个数据集合中的数据进行关联,最终返回一个新的集合。

2.1 Join

用于在两个数据集合中根据共同的字段进行关联。

var students = new List<Student> {
    new Student("Tom", 1),
    new Student("Jerry", 2)
};
var scores = new List<Score> {
    new Score(1, 90),
    new Score(2, 80)
};
var result = students.Join(scores, s => s.Id, sc => sc.StudentId, (s, sc) =>
    new {
        Name = s.Name,
        Score = sc.Score
    }
);

// 返回结果为:
// Tom 90
// Jerry 80

2.2 GroupJoin

用于在两个数据集合中根据共同的字段进行关联,但是一次性返回所有关联的结果。

var students = new List<Student> {
    new Student("Tom", 1),
    new Student("Jerry", 2)
};
var scores = new List<Score> {
    new Score(1, 90),
    new Score(2, 80),
    new Score(2, 70)
};
var result = students.GroupJoin(scores, s => s.Id, sc => sc.StudentId, (s, scs) =>
    new {
        Name = s.Name,
        Scores = scs.Select(sc => sc.Score)
    }
);

// 返回结果为:
// Tom 90
// Jerry 80, 70
3. 量词操作

量词操作用于判断数据集合中的数据是否满足某个条件。

3.1 Any

用于判断集合中是否有任意一个数据项满足条件。

var list = new List<int> { 1, 2, 3, 4 };
var result = list.Any(i => i == 3);

// 返回结果为True

3.2 All

用于判断集合中的所有数据项是否满足条件。

var list = new List<int> { 1, 2, 3, 4 };
var result = list.All(i => i > 0);

// 返回结果为True
总结

以上就是LINQ的一些基础和高级操作,可以极大地简化C#中对数据的处理,提高程序员的工作效率。