Linq用法笔记

简介:

一、什么是Linq?

LINQ即Language Integrated Query(语言集成查询),LINQ是集成到C#和Visual Basic.NET这些语言中用于提供查询数据能力的一个新特性。

LINQ是一种用来进行数据访问的编程模型,Linq可以用相同的语法访问不同的数据源,比如xml、数据库、注册表、事件日志等。

二、Linq包含哪些部分?

 

 

1、Linq to Sql组件:可以查询关系型数据库的数据,并可以提供其他操作,如检索、插入、修改、删除、排序、聚合、分区等。

2、Linq to DataSet组件:查询DataSet对象中的数据。

3、Linq to Object组件:可以查询IEnumerable或是IEnumerable<T> 集合对象,即能够查询任何可以枚举的集合,如数组(Array和ArrayList)、泛型字典Dictinary<T>等,以及用户自定义的集合,而不需要使用Linq提供程序或API。

4、Linq to XML组件:查询和操作XML结构的数据。

5、Linq to Entities:是 Entity Framework 的一部分并且取代 LINQ to SQL 作为在数据库上使用 LINQ 的标准机制。Entity Framework 是行业领先的对象-关系映射(ORM)系统。可以和多种数据库一起使用,并支持各种灵活、复杂的数据模型。

三、Linq的一些用法

1、简单的LINQ查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
static  void  Main( string [] args)
 
{
 
     int [] marks = { 60, 77, 82, 46, 59, 98, 100, 84 }; //定义一个数组
 
     var  good =  from  in  marks //使用LINQ找到所有数值大于等于60的数字
 
                where  m >= 60
 
                select  m;
 
     foreach  ( int  mark  in  good) //循环每一个结果
 
     {
 
         Console.WriteLine(mark); //输出结果
 
     }
 
}

  

2、使用Lambda表达式的LINQ查询

static void Main(string[] args)

{    int[] marks = { 60, 77, 82, 46, 59, 98, 100, 84 };    var good = marks.Where(m => m >= 60);//使用Lambda表达式查询数值大于等于60的数字

    foreach (int mark in good)//循环每一个结果
    {

        Console.WriteLine(mark);//输出结果
    }

}

 

3、使用LINQ查询对象集合

class Program

{static void Main(string[] args)

{

    List<Student> students = new List<Student>//申明Student对象的集合
    {new Student{ StudentID=1, Sex=true, Name="小明", Birthday=Convert.ToDateTime("1984-1-1")},new Student{ StudentID=2, Sex=false, Name="小张", Birthday=Convert.ToDateTime("1983-5-1")},new Student{ StudentID=3, Sex=true, Name="小王", Birthday=Convert.ToDateTime("1983-2-15")},new Student{ StudentID=4, Sex=false, Name="小丽", Birthday=Convert.ToDateTime("1985-3-8")}

    };//接下来使用LINQ查询所有年龄小于25岁的男性

    var names = from s in students                where s.Sex == true&&s.GetAge()<25 //调用对象的方法

                select s.Name;    foreach (string name in names)//循环输出结果
    {

        Console.WriteLine(name);

    }

}

}public class Student  //定义Student类{//以下是定义类中属性

 public string Name { get; set; } public int StudentID { get; set; } public bool Sex { get; set; } public DateTime Birthday { get; set; }//以下是定义类中的方法

 public int GetAge()

 {     return DateTime.Now.Year - Birthday.Year;

 }

}

 

四、Linq有什么好处?

   1、容易上手,学习成本低  

   2、可以很大程度上减少代码量。   

   3、更快开发错误更少的应用程序。   

   4、可以很容易的合并数据源。   

   5、让新开发者开发效率更高。   

   6、任何对象或数据源都可以定制实现Linq适配器,为数据交互带来真正方便。














本文转自xmgdc51CTO博客,原文链接http://blog.51cto.com/12953214/1941212 ,如需转载请自行联系原作者


相关文章
|
前端开发 JavaScript 应用服务中间件
修改Jeecg-boot context-path(附加图片+Nginx配置)
修改Jeecg-boot context-path(附加图片+Nginx配置)
377 0
|
机器学习/深度学习 数据采集 存储
“维度削减+逻辑回归”:如何使用PCA大幅提升乳腺癌的预测成功率?
“维度削减+逻辑回归”:如何使用PCA大幅提升乳腺癌的预测成功率?
281 0
|
JavaScript 前端开发 API
SignalR的Javascript客户端API使用方式整理
原文:SignalR的Javascript客户端API使用方式整理 SignalR的服务端提供了两种实现方式,分别是PersistentConnection和Hub,这两种方式的侧重点不同: PersistentConnection更接近于底层,编程接口比较简单,传输的数据格式为纯文本,客户端只需要调用发送和定义接收方法就可以实现跟服务端的交互。
1409 0
|
5天前
|
数据采集 人工智能 自然语言处理
3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐
结合阿里云无影 AgentBay 云端并发采集与 LlamaIndex 智能分析,3分钟高效抓取134篇 AI Agent 文章,实现 AI 推荐、智能问答与知识沉淀,打造从数据获取到价值提炼的完整闭环。
390 93
|
6天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
5天前
|
SQL 人工智能 自然语言处理
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%
随着生成式AI的普及,Geo优化(Generative Engine Optimization)已成为企业获客的新战场。然而,缺乏标准化流程(Geo优化sop)导致优化效果参差不齐。本文将深入探讨Geo专家于磊老师提出的“人性化Geo”优化体系,并展示Geo优化sop标准化如何帮助企业实现获客效率提升46%的惊人效果,为企业在AI时代构建稳定的流量护城河。
394 156
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%