Linq的知识分享
最近的学习中接触了Linq相关知识,在此讲解一些自己的理解,如有错误请谅解
一、相关背景介绍
1、由于不同的数据库或者其他储存数据的表格链表等等都有不同的查询方法,Linq称为语言集成查询
2、Linq主要包含了LINQ to Objects
,LINQ to XML
,LINQ to SQL
, LINQ to Entity
,其中objects
代表内存集合,Entity
代表ADO.NET Entity Framework
(微软的ORM框架)
3、Linq有两种写法,一种为普通写法,一种是Lamda表达式
4、LINQ所处在的主要命名空间:System.Linq
二、Linq To Objects介绍与使用
1、对数组进行查询
int[] nums = new int[5] {
1, 3, 2, 0, 4 }; //初始化数组
var queryInfo = from num in nums select num; //遍历数组对象
var queryInfo = from num in nums select num; //Lambda表达式
string arr = "";
foreach (var item in queryInfo)
{
arr += item + " ";
}
Console.WriteLine(arr);
顺便说说var定义,该变量的实际类型将在其初始化表达式中推到出来。(只能定义在局部变量中,Var不能定义全局变量,并且必须初始化),在上述代码中定义queryInfo是 IEnumerable< T> 接口,接收查询的返回值,最后通过foreach遍历该接口获得值。可以不使用var,如下所示也可
IEnumerable<int> queryInfo = from num in nums select num;
2、对泛型链表进行查询
链表初始化:
User user1 = new User() {
UserId = 12231, UserName = "普通成员1" };
User user2 = new User() {
UserId = 2911, UserName = "普通成员2" };
User user3 = new User() {
UserId = 3, UserName = "普通成员3" };
User user4 = new User() {
UserId = 4623, UserName = "普通成员4" };
User user5 = new User() {
UserId = 5, UserName = "普通成员2" };
User user6 = new User() {
UserId = 2, UserName = "普通成员2" };
User user7 = new User() {
UserId = 1, UserName = "普通成员2" };
List<User> users = new List<User>() {
user1, user2, user3, user4, user5 }; //泛型链表
使用Linq表达式查询UserName是普通成员1的UerId
var User = (from p in users where users.UserName.ToString() == "普通成员1" select users).ToList();
使用Lamda表达式查询
List<User> User = (users.Where(t => t.UserName=="普通成员1").ToList()
3、Linq对DataTable进行查询
假设dtTable是已经初始化好了的一个DataTable
使用Linq查询:
List<string> lstID = (from d in dtTable.AsEnumerable() select d.Field<string>("ID")).ToList<string>();//查询一个ID字段
使用Lamda表达式
List<string> lstID1 = dtTable.AsEnumerable().Where(t=>t.Field<string>("Name")=="迅雷"|| t.Field<string>("Name")=="谷歌").Select(t => t.Field<string>("ID")).ToList<string>();
三、Linq To XML介绍与使用
四、Linq To SQL介绍与使用
后续更新,如果对自己有帮助,请点赞支持,谢谢