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 集合对象,即能够查询任何可以枚举的集合,如数组(Array和ArrayList)、泛型字典Dictinary等,以及用户自定义的集合,而不需要使用Linq提供程序或API。
4、Linq to XML组件:查询和操作XML结构的数据。
5、Linq to Entities:是 Entity Framework 的一部分并且取代 LINQ to SQL 作为在数据库上使用 LINQ 的标准机制。Entity Framework 是行业领先的对象-关系映射(ORM)系统。可以和多种数据库一起使用,并支持各种灵活、复杂的数据模型。
三、Linq的一些用法
1、简单的LINQ查询
static void Main(string[] args)
{
int[] marks = { 60, 77, 82, 46, 59, 98, 100, 84 };//定义一个数组
var good = from m 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 students = new List//申明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适配器,为数据交互带来真正方便。
欢迎关注我的公众号(同步更新文章):DoNet技术分享平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)