在学习C#的过程中,发现老师使用到了这个技术,是我以前没有用过的,我以前都是用SQL语句来进行增删改查,今天学习到了这里就记录一下,以供以后反过来复习的时候有迹可寻。
一、什么是LINQ?
LINQ(Language Integrated Query,语言集成查询)是一项微软的技术,新增一种自然查询的SQL语法到.NET Framework 的编程语言中,当前可支持C#以及Visual Basic .NET语言。
LINQ定义了一组标准查询操作符用于在所有基于.NET平台的编程语言中更加直接的声明跨越、过滤和投射操作的统一方式,标准查询操作符允许查询作用于所有基于IEnumerable<T>接口的源,并且他还允许适合于目标域或技术的第三方特定域操作符来扩大标准查询操作符集,更重要的是,第三方操作符可以使用他们自己的提供附加服务的实现来自由地替换标准操作符。
二、什么是LINQ查询语句?
LINQ(Language Integrated Query)查询语句是C#语言中的一种查询表达式,用于查询内存中的集合数据、XML文档、数据库或SQL数据等。它允许开发者以声明式语法对数据源进行查询操作,并可以简化数据的查询、转换、过滤、排序和聚合等操作。
LINQ查询语句有一组LINQ子句组成,包括from子句、where子句、select子句、orderby子句、group子句、into子句、join子句和let子句等。这些子句按照一定的规则组合在一起,形成一个完整的查询表达式。
使用LINQ查询语句,开发者可以以类似SQL的方式对数据进行查询和操作,但无需编写SQL语句,同时还可以避免编写繁琐的代码逻辑,提高代码的可读性和可维护性。
三、LINQ查询语句有哪些应用场景?
1.数据库查询
使用LINQ to SQL可以对关系型数据库进行查询和操作,通过映射对象与数据库表之间的映射关系,将对象查询转换为SQL语句执行,
2.XML文档查询
使用LINQ to XML可以对XML文档进行查询和操作,通过使用XDocument和XPath表达式来查询XML节点和属性。
3.集合查询(这个我使用得会多一些,查找的相关资料也会多一些)
使用LINQ to Object可以对数组、集合、列表等常见集合进行查询和操作,通过使用LINQ表达式来过滤、排序、聚合集合中的元素。
就比如我在使用TreeView实现文件目录树展示的时候就使用到了对集合的查询
public IEnumerable<FileSystemInfoNodeViewModel> Children
{
get
{
//定义一个变量并将获取到的文件目录信息赋值给这个变量
var di = _wrapper as DirectoryInfo;
//使用GetFileSystemInfos()方法返回文件系统信息集合,然后从集合中选择符合的数据,同时将这些数据转换成FileSystemInfoNodeViewModel类型
return di.GetFileSystemInfos().Select<FileSystemInfo, FileSystemInfoNodeViewModel>(fsi =>
{
//对查询到的数据进行判断,如果查询到的结果是文件信息
if (fsi is FileInfo fi)
{
//就返回一个实例化对象,同时给对象的IconSource属性设置一个值
return new FileNodeViewModel(fi) { IconSource = "/Images/file_word.png" };
}
//如果查询到的结果是文件目录信息
else if (fsi is DirectoryInfo dii)
{
//就返回一个实例化对象,同时给对象的IconSource属性设置一个值
return new DirectoryNodeViewModel(dii) { IconSource = "/Images/folder.png" };
}
//如果查询的是其他的类型
else
{
//就抛出异常(不知道文件系统信息的类型)
throw new Exception("Unknown FileSystemInfo type");
}
});
}
}
在这个接口中有一个GetFileSystemInfos()方法就使用到了select查询
GetFileSystemInfos().Select<FileSystemInfo, FileSystemInfoNodeViewModel>() 是一个LINQ查询语句,用于从GetFileSystemInfos()方法返回的文件系统信息集合中选择数据,并将这些数据转换为FileSystemInfoNodeViewModel类型。
具体来说,这个查询语句做了以下几件事情:
GetFileSystemInfos(): 这是一个方法,它返回一个包含文件系统信息的集合。这些信息可能来自文件系统中的文件和目录。Select<FileSystemInfo, FileSystemInfoNodeViewModel>(): 这是LINQ的Select方法,用于从集合中选择数据。在这个例子中,它被用来将每个FileSystemInfo对象转换为一个FileSystemInfoNodeViewModel对象。
关于Select方法:
Select是LINQ(Language Integrated Query)的一个重要方法,用于从数据源中选择数据并执行一些转换。在这个例子中,它接收两个类型参数:第一个是源类型(在这里是FileSystemInfo),第二个是目标类型(在这里是FileSystemInfoNodeViewModel)。然后,它遍历每个源对象,并使用一个lambda表达式(通常作为Select方法的唯一参数)将每个源对象转换为目标类型的对象。
4.自定义数据源查询
如果你有自定义的数据源,并且想要使用LINQ进行查询,你可以使用LINQ to Entities或类似的工具。
5.并行数据处理
如果你需要处理大规模的数据集,或者需要进行并行计算任务,你可以使用Parallel LINQ (PLINQ)。PLINQ允许你在并行环境中使用LINQ查询。
总的来说,我认为它是一项很奈斯的技术,在日常工作中大概都会用到,我也将继续对于这一块进行学习,跟我一起慢慢进步吧,你每走的一小步都是你人生中高光时刻的铺垫。
文本性资料来源于文心一言,便记录了下来,希望能够帮助到你们~
C#中的LINQ基础:查询语句、应用与优势
本文介绍了C#中LINQ的基本概念,包括它是如何将SQL语法融入.NETFramework的,以及其查询语句的构成和应用场景,如数据库查询、XML文档操作和集合处理。作者通过实例展示了如何使用LINQ进行集合查询,并提及了其在并行数据处理中的潜力。
1043

被折叠的 条评论
为什么被折叠?



