LINQ查询操作符浅析(LINQ查询操作符入门解析)

原创
ithorizon 7个月前 (10-20) 阅读数 20 #后端开发

LINQ查询操作符浅析(LINQ查询操作符入门解析)

一、LINQ简介

LINQ(Language Integrated Query)是微软在.NET框架中引入的一种查询语言,它允许开发者在C#或VB.NET中以声明性行为查询数据。LINQ的出现极大地简化了数据操作,节约了代码的可读性和可维护性。LINQ赞成多种数据源,如数据库、XML、对象集合等。

二、LINQ查询操作符概述

LINQ查询操作符分为两大类:标准查询操作符和扩展方法。标准查询操作符是.NET框架提供的一组预定义的查询操作符,用于实现各种数据操作功能。扩展方法则允许开发者自定义查询操作符,以满足特定的需求。

三、标准查询操作符分类

标准查询操作符可以分为以下几类:

  • 聚合操作符
  • 连接操作符
  • 转换操作符
  • 过滤操作符
  • 生成操作符
  • 排序操作符

四、聚合操作符

聚合操作符用于对数据源中的元素进行统计和计算,如求和、求平均值、最大值、最小值等。以下是一些常用的聚合操作符:

1. Sum

var numbers = new List { 1, 2, 3, 4, 5 };

var sum = numbers.Sum();

Console.WriteLine(sum); // 输出:15

2. Average

var numbers = new List { 1, 2, 3, 4, 5 };

var average = numbers.Average();

Console.WriteLine(average); // 输出:3

3. Max 和 Min

var numbers = new List { 1, 2, 3, 4, 5 };

var max = numbers.Max();

var min = numbers.Min();

Console.WriteLine(max); // 输出:5

Console.WriteLine(min); // 输出:1

五、连接操作符

连接操作符用于将两个数据源进行合并,生成一个新的数据源。以下是一些常用的连接操作符:

1. Concat

var numbers1 = new List { 1, 2, 3 };

var numbers2 = new List { 4, 5, 6 };

var result = numbers1.Concat(numbers2);

result.ForEach(n => Console.WriteLine(n)); // 输出:1 2 3 4 5 6

2. Zip

var numbers = new List { 1, 2, 3 };

var letters = new List { 'a', 'b', 'c' };

var result = numbers.Zip(letters, (n, l) => n + l);

result.ForEach(nl => Console.WriteLine(nl)); // 输出:1a 2b 3c

六、转换操作符

转换操作符用于将数据源中的元素成为新的形式。以下是一些常用的转换操作符:

1. Select

var numbers = new List { 1, 2, 3, 4, 5 };

var squares = numbers.Select(n => n * n);

squares.ForEach(s => Console.WriteLine(s)); // 输出:1 4 9 16 25

2. SelectMany

var numbers = new List> {

new List { 1, 2 },

new List { 3, 4 },

new List { 5, 6 }

};

var result = numbers.SelectMany(n => n);

result.ForEach(n => Console.WriteLine(n)); // 输出:1 2 3 4 5 6

七、过滤操作符

过滤操作符用于从数据源中筛选出满足特定条件的元素。以下是一些常用的过滤操作符:

1. Where

var numbers = new List { 1, 2, 3, 4, 5 };

var evenNumbers = numbers.Where(n => n % 2 == 0);

evenNumbers.ForEach(n => Console.WriteLine(n)); // 输出:2 4

2. Take 和 Skip

var numbers = new List { 1, 2, 3, 4, 5 };

var firstTwo = numbers.Take(2);

var lastThree = numbers.Skip(2);

firstTwo.ForEach(n => Console.WriteLine(n)); // 输出:1 2

lastThree.ForEach(n => Console.WriteLine(n)); // 输出:3 4 5

八、生成操作符

生成操作符用于创建新的数据源。以下是一些常用的生成操作符:

1. Range

var numbers = Enumerable.Range(1, 5);

numbers.ForEach(n => Console.WriteLine(n)); // 输出:1 2 3 4 5

2. Repeat

var numbers = Enumerable.Repeat(5, 3);

numbers.ForEach(n => Console.WriteLine(n)); // 输出:5 5 5

九、排序操作符

排序操作符用于对数据源中的元素进行排序。以下是一些常用的排序操作符:

1. OrderBy 和 OrderByDescending

var numbers = new List { 3, 1, 4, 1, 5, 9 };

var sortedNumbers = numbers.OrderBy(n => n);

var sortedNumbersDesc = numbers.OrderByDescending(n => n);

sortedNumbers.ForEach(n => Console.WriteLine(n)); // 输出:1 1 3 4 5 9

sortedNumbersDesc.ForEach(n => Console.WriteLine(n)); // 输出:9 5 4 3 1 1

2. ThenBy 和 ThenByDescending

var people = new List> {

new KeyValuePair("张三", 20),

new KeyValuePair("李四", 25),

new KeyValuePair("王五", 20)

};

var sortedPeople = people.OrderBy(p => p.Value).ThenBy(p => p.Key);

sortedPeople.ForEach(p => Console.WriteLine($"{p.Key}: {p.Value}")); // 输出:王五: 20 张三: 20 李四: 25

十、总结

LINQ查询操作符为.NET开发者提供了一种简洁、高效的数据操作行为。通过掌握各种查询操作符,开发者可以轻松实现对数据源的各种操作,从而节约代码的可读性和可维护性。在实际开发过程中,开发者应利用具体需求选择合适的查询操作符,以实现最佳的数据处理效果。


本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: 后端开发


热门