一、linq的基本概念
LINQ是C#和VB中的统一查询语法,使用对象来保存和检索来自不同来源(如数据库、xml、对象集合)的数据。
主要功能:消除了编程语言和数据库之间的不匹配,以及为不同类型的数据源提供统一的查询接口。
适用范围:LInq适用于实现了IEnumerable <T>(IQueryable继承于IEnumerable )的实例,如:List,Dictionary,Queue,LinkedList,Array等
二、linq的使用
有两种方法可以将LINQ查询写入IEnumerable集合或IQueryable数据源。
1、查询语法
特点:以from子句开头,可以以select或groupBy子句结束
2、lambda表达式
下边给出了简单的例子
1 //测试数据 2 IList<UserInfo> userList = new List<UserInfo>() { 3 new UserInfo() { Id = 1, UserName = "zs", Age = 23} , 4 new UserInfo() { Id = 2, UserName = "ls", Age = 20 }, 5 new UserInfo() { Id = 3, UserName = "ww", Age = 33 }, 6 new UserInfo() { Id = 4, UserName = "zl", Age = 26}, 7 new UserInfo() { Id = 5, UserName = "tq", Age = 42 } 8 }; 9 //需求查询大于20岁的用户的名字和年龄 10 11 //1、查询语法 12 var users1 = from u in userList 13 where u.Age > 20 14 select new { u.UserName,u.Age}; 15 //2、lambda表达式 16 var users2 = userList.Where(u => u.Age > 20).Select(u => new { u.UserName, u.Age });
三、linq详解
1、过滤 (where 和 oftype)
Where:根据给定的条件表达式过滤集合,并返回一个新集合
OfType:根据类型进行过滤
1 IList<object> list = new List<object>() { 1, "hello", user };//user是一个UserInfo的实例 2 //query语法 3 var result = from o in list.OfType<string>() 4 select o; 5 //lambda语法 6 var result2 = list.OfType<string>();
2、排序(OrderBy,OrderByDescending,ThenBy,ThenByDescending)
1 //对userList先按Id排序,再按Age排序 2 //query语法 3 var result = from u in userList 4 orderby u.Id,u.Age descending 5 select u; 6 //lambda语法 7 var result2 = userList.OrderByDescending(u => u.Id).ThenBy(u=>u.Age);
----未完待续