1,学习LinQ
概要:
学习Linq的第一篇,认识什么是Linq,了解LQ相关的知识和一个简单的LQ例子。
此系列是我的学习笔记,来源:http://www.cnblogs.com/lovecherry/
内容:
LinQ是基于关系数据的语言集成查询,用于以对象形式管理的关系数据的查询功能。
LinQ包括:Linq to sql,Linq to xml,Linq toobjects,Linq to dataset等。
这里只学习Linq to sql,我将这个简写为LQ。纯属个人行为,不知道这样是不是规范?!
其中LinQ中Linq to objects是核心,Linq to xml 也有广泛的应用。而Linq to sql我认为是最易入门和常用的。
LinQ是在c#3.0下的,所以必须是在vs2008或vs2010下学习。本人用的是vs2010。
在这里要认识一些c#3.0里新曾的一些东西:
1,Var声明:新增的东西,声明隐含类型局部变量,因为是隐含类型,所以声明时必须赋值,让系统判断类型。这个用法跟JS中差不多。
2,LQ中常用的匿名类型:
VarUser=new {Login=”admin”,PWD=123456};//无须显示定义
3,扩展方法:
扩展方法只能在静态类定义且是静态方法。这个用到的时候再说。
4,Lambda表达式:
(参数列表)=>表达式或语句块
一个简单的例子:
在vs2010(或vs2008)中新建一个consoleApplication,会发现这时的.cs文件会比vs2005中多个引用空间:using System.Linq;。这个是在c#3.0后才有的。
由于代码很少,都贴了:
usingSystem;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SQDemo1conApp
{
public class Person
{
public string username { get; set; }
public int age { get; set; }
}
class Program
{
static void Main(string[] args)
{
var persons = new List<Person> {
new Person {username = "a", age=19},
new Person {username = "b", age=20},
new Person {username = "c", age=21}
};
//select username.ToUpper() from persons where age>=20
//var selectperson = from p in persons where p.age >= 20 selectp.username.ToUpper();
var selectperson = persons.Where(p => p.age >= 20).Select(p =>p.username.ToUpper());
foreach (var p in selectperson)
Console.WriteLine(p);
Console.ReadKey();
}
}
}
其中varselectperson = from p in persons where p.age >= 20 selectp.username.ToUpper();
等同于varselectperson = persons.Where(p => p.age >= 20).Select(p =>p.username.ToUpper());
它的意思就类似与T-sql中的select username.ToUpper() frompersons where age>=20
注意=>和>=是不同的,代表不同的意思。
LQ据说可以实现T-sql 90%功能,只有部分复杂功能难以实现。LQ的select是写在后面的,这个跟T-sql中不大一样。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库