LINQ (Language-Integrated Query,语言集成查询)。
LINQ to Objects、LINQ to SQL、LINQ to DataSet和LINQ to XML,它们分别查询和处理对象数据(如集合)、关系数据(如SQL Server数据库等)、DataSet对象数据和XML结构数据。 主要对数据进行操作
-----------------------------------------------------
LINQ 语法基础——C#3.0
-------------------------------------------
使用var创建隐型局部变量
Int number=2008; String [] strs=new string [5]; UserInfo ui=new UserInfo();
var number=2008; var strs=new string[]{“2008”,”08”,”05”,”20”}; var ui=new UserInfo();
var关键字指示编译器能够根据变量的初始化表达式推算出该变量的类型,即使用var关键字声明变量时隐藏了该变量的类型。Var关键字可以在以下四种情况下使用。
1.声明局部变量;
2.For语句中;
3.Foreach语句中;
4.Using 语句中;
对象初始化器
使得开发人员可以不调用类的构造函数就能够以声明性方式创建一个新的对象,并设置该对象的各个属性的值。
UserInfo ui = new UserInfo { Username = "张三", Useraddr = "武汉", Userage = "23", Usersex = "男", Usertel = "027-50459016" //userInfo里面有的属性可以直接设置 };
集合初始化器
合初始化器用来初始化一个集合,它由一系列元素组成,并封闭于“{”和 “}”标记内。
List<int> numbers = new List<int> () { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; //可以在{}里面初始化一个集合
创建匿名类型对象
使用new操作符和匿名对象初始化器能够创建一个新的对象。
//创建匿名类型的对象 var user = new { ID = 1, USERNAME = "张三", USERSEX = "男", USERADDR = "武汉" };
创建隐形数组
隐形数组和匿名类型对象比较相似。隐形数组使用var关键字和数组初始化器创建,且数组初始化器中的元素的数据类型必须都能够隐式转换为同一个数据类型(不能为null)的元素
var numbers = new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; var strs = new[] { "he", "she", "it" };
Lambda表达式 :使用委托的位子就可以使用Lambda表达式
Lambda表达式是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。Lambda表达式由输入参数、Lambda运算符(=>)和表达式(或语句块)构成。Lambda表达式的基本形式如下:
(input parameters) => expression
input parameters表示输入参数,expression表示表达式。输入参数位于Lambda运算符的左边,表达式或语句块位于Lambda运算符的右边,Lambda运算符 =>读作 “goes to”
//声明一个委任 ,跟Clss同级 delegate int MyDelegate(int i);
delegate void Md2(); class Program { static void Main(string[] args) { MyDelegate md = delegate(int x) //普通的委任 { return x * x; }; MyDelegate md = (x) => x * x; //Lambda表达式 int a = md(3); Console.WriteLine(a);
Md2 md2 = () => { Console.WriteLine("Hello!!"); }; //Lambda表达式
md2(); } }
(x , y) => { int result = x*y; Response.Write(result.ToString()); } //多语句时使用语句块{}
哪里用的上: 例如: 集合里面的Find(),FindAll()的参数就是委托
List<int> ll = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 0 }; foreach (var item in ll.FindAll((x) => x % 2 == 0)) { Console.WriteLine(item); }
Lambda表达式的右边不但可以是一个表达式,而且还可以是语句块
查询中的Lambda表达式
Lambda表达式最常见的用法就是查询。下面的实例代码在Select操作中使用,Lambda表达式查询元素,并在网页上输出查询结果。
int[] list = new int[] { 1, 5, 2, 3, 4, 6, 8, 9, 5, 3, 2, 1, 12 }; //select投影 返回到新的变量中 Func就是委托 int为参数,TR为返回的值 Func<int,TR> =delegate(int a){return 1;} var temp = list.Select((x) => x).Distinct(); //Distinct返回非重复的值
//OrderByDescending 倒序排列
var arry = list.OrderByDescending((x) => x);
foreach (var item in temp)
{
Console.WriteLine(item);
}