32

C# 之 LINQ 简析

 4 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzI4NDI0OTA3Nw%3D%3D&%3Bmid=100000270&%3Bidx=1&%3Bsn=047116d770aa0941dcb21d7d8eb3d8f3&%3Bchksm=6bff1c945c889582464afd952644597257c1f002ca971ef59df083ecbafca677019ccacd999d
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

C# 之 LINQ简析

什么是LINQ?

Linq是在.NET Framework 3.5 之后的版本出现的. 在程序中的数据和数据库的数据相反,保存在类对象或结构 中的数据差异很大。没有通用的查询语言从数据结构中获取 数据

LINQ: 语言集成查询(Language Integrated Query)是一 组用于C#和Visual Basic语言的扩展。 它允许编写C#或Visual Basic代码以查询数据库相同的方式操作内存数据。

LINQ包含 DLinq 和 XLinq

LINQ的简单使用

使用时需引用Linq命名空间:

System.Linq

查询一数组中大于等于60的元素,代码如下:

int[] numberArr = new int[] { 100, 90, 80, 70, 60, 50, 40, 30, 20, 10 };

//在scores表中查找大于等于60的元素

IEnumerable<int> numRes = from num in numberArr where num >= 60 select num;

foreach (int i in numRes)

{

Console.WriteLine(i);

}

JzyURrI.png!web

LINQ的优点

  • 无需复杂学习过程即可上手;

  • 编写更少代码即可创建完整应用;

  • 更快开发错误更少的应用程序;

  • 无需求助奇怪的编程技巧就可合并数据源;

  • 能够大幅减少过程控制语句的代码块,使代码的可读性和可维护性大幅提高;

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

LINQ中的匿名类型

匿名类型借助 v ar 关键字进行创建,可以把它理解为类型占 位符,它并不是C#中的一种基本类型。它能在你编写程序的 时候,自动计算出等式右边的类型,而且支持智能感知。

var 定义的可以认为是任意类型,你给他赋值是什么类型,他就是什么类型,

例如,下面这些语句都和合法的:

var number = 15;

var fo = 1.5f;

var bo = false;

var arr = new[] { 1, 2, 3, 4 };

// 自定义类型

// var mycalss = new myCalss();

匿名类型成员必须使用成员赋值,简单名称或成员访问来声明;

n2EjU3r.png!web

匿名类型的创建示例: 

var person = new { Name = "Czhenya", Sex = "男" };

Console.WriteLine(person.Name);

Console.WriteLine(person.Sex);

个人感觉可以理解为:有个Person类,他有个两个参数的重载构造函数(参数分别是:姓名,性别),这样就创建了一个person的实例,并且这个实例包含有姓名,性别的两个属性。

使用匿名类型需要注意:

(1)匿名类型只能和局部变量配合使用,不能用于类成员;

(2)由于匿名类型没有名字,所以必须使用var关键词作为变 量类型

当编译器遇到匿名类型的对象初始化时,创建了一个有名字 的新类类型。

对于每一个成员初始化器,编译器推断其类型并在新的类中 创建这个类型的私有变量,然后创建用于访问这个变量的读 写属性。

如果编译器遇到了另一个具有相同参数名、相同引用类型名 和相同顺序的匿名类型,它会重复这个类型并直接创建新的 实例,而不会创建新的匿名类型。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK