LINQ(Language Integrated Query)是 C# 中的一种语言集成查询技术,它提供了一种统一的方式来查询各种数据源,包括集合、数据库、XML 等。通过 LINQ,可以在 C# 中使用类似于 SQL 的语法来查询和操作数据,这使得数据查询和操作变得更加简洁和直观。
以下是十个常用的 LINQ 函数及其示例代码:
1.Where:用于筛选序列中满足指定条件的元素。
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6 };
var evenNumbers = numbers.Where(n => n % 2 == 0);
// 结果:evenNumbers = { 2, 4, 6 }
2.Select:用于对序列中的每个元素执行指定的转换操作。
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
var squaredNumbers = numbers.Select(n => n * n);
// 结果:squaredNumbers = { 1, 4, 9, 16, 25 }
3.OrderBy / OrderByDescending:用于按照指定的条件对序列中的元素进行排序。
List<int> numbers = new List<int> { 5, 2, 7, 3, 9 };
var sortedNumbers = numbers.OrderBy(n => n);
// 结果:sortedNumbers = { 2, 3, 5, 7, 9 }
4.GroupBy:根据指定的键对序列中的元素进行分组。
List<string> fruits = new List<string> { "apple", "banana", "orange", "avocado", "blueberry" };
var groupedFruits = fruits.GroupBy(fruit => fruit[0]);
// 结果:groupedFruits = { { 'a', { "apple", "avocado" } }, { 'b', { "banana", "blueberry" } }, { 'o', { "orange" } } }
5.Any / All:用于检查序列中是否存在满足指定条件的元素。
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
bool anyEven = numbers.Any(n => n % 2 == 0);
// 结果:anyEven = true
bool allPositive = numbers.All(n => n > 0);
// 结果:allPositive = true
6.First / FirstOrDefault:用于获取序列中的第一个元素或满足条件的第一个元素。
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
int firstEven = numbers.First(n => n % 2 == 0);
// 结果:firstEven = 2
int firstNegative = numbers.FirstOrDefault(n => n < 0);
// 结果:firstNegative = 0(如果没有负数则返回默认值)
7.Last / LastOrDefault:用于获取序列中的最后一个元素或满足条件的最后一个元素。
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
int lastEven = numbers.Last(n => n % 2 == 0);
// 结果:lastEven = 4
int lastNegative = numbers.LastOrDefault(n => n < 0);
// 结果:lastNegative = 0(如果没有负数则返回默认值)
8.Count:用于计算序列中满足指定条件的元素个数。
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
int evenCount = numbers.Count(n => n % 2 == 0);
// 结果:evenCount = 2
9.Sum:用于计算序列中所有元素的总和。
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
int sum = numbers.Sum();
// 结果:sum = 15
10.Average:用于计算序列中所有元素的平均值。
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
double average = numbers.Average();
// 结果:average = 3