通过本文需要掌握的关于linq的知识点为:
- linq的基本概念及其特点
- linq中常见操作及使用
- linq常见的方法查询
1 Linq基本概念
1.1 ling定义
Linq(Language Integrated Query),语言集成查询,是一种使用类似SQL语句操作多种数据源的功能。如,我们可以使用c#查询access数据库、.net数据集、xml文档以及实现了IEnumerable或IEnumerable<T>接口的集合类(如List,Array,SortedSet,Stack,Queue等,可以进行遍历的数据结构都会集成该类)。从.net framework3.5中开始引入,能够提升程序数据处理能力和开发效率,具有集成性、统一性、可扩展性、抽象性、说明式编程、可组成型、可转换性等优势。
1.2 linq提供的程序
- Linq to Object。提供程序查询内存中的集合和数组。
- Linq to DataSet。提供程序查询http://ADO.NET数据集中的数据。
- Linq to SQL。提供程序查询和修改Sql Server数据库中的数据,将应用程序中的对象模型映射到数据库表。
- Linq to Entities。使用linq to entities时,会在后台将linq语句转换为sql语句与数据库交互,并能提供数据变化追踪。
- Linq to XML。提供程序查询和修改XML,既能修改内存中的xml,也可以修改从文件中加载的。
2 Linq查询
linq查询包括两种方式,一是语句查询,二是方法查询。语句查询使用较多,也更容易理解,微软官网推荐使用。下面介绍语句查询的子句使用。
2.1 from子句
用来标识查询的数据源。基本语法格式为:
from 迭代变量 in 数据源
首先,通过以下简单示例,给出from用法
static void Main(string[] args)
{
var nums = new int[] {56,97,98,57,74,86,31,90};
var queryInfo = from num in nums select num;//num为数据中的每个元素(相当于foreach中迭代变量)
var numStr = string.Empty;
foreach (var item in queryInfo)
{
numStr += item + " ";
}
Console.WriteLine($"数据元素包括:{numStr}");
}
运行结果如下图1所示:
![1b8213f471d53f127f992f96488a7fcc.png](https://img-blog.csdnimg.cn/img_convert/1b8213f471d53f127f992f96488a7fcc.png)
在一个查询表达式中,也可以使用多个from子句,示例如下:
static void Main(string[] args)
{
var arraySet = new List<string>() {
"my favorite hobby","is","painting and coding"};
var queryInfo = from str in arraySet from item in str select item;//先从arraySet中获取每个分号内的字符串,再分别从字符串中获取每个字符
var exeCount = 0;
var res = string.Empty;
foreach (var item in queryInfo)// 开始执行查询语句
{
res +=