Linq 是 C# 3.0 引入的特性
让处理对象就像执行SQL语句一样简单方便;
LINQ是C#的一个强大的特性,它为数据查询和操作提供了简洁、统一的语法,使得数据处理变得更加直观和灵活。
List<Students> list = new List<Students>();
list.Add(new Students { Name = "张三", Age = 18});
list.Add(new Students { Name = "王五", Age = 20});
// 1、查询语法(类SQL风格)
var query = from student in list
where student.Age > 18
select student;
// 2、方法语法(即:扩展方法 和 Lambda表达式)
var query2 = list.Where(w=>w.Age > 18);
// 基本查询(包括:Where、Select、OrderBy/OrderByDescending、Take...Skip 等)
var adults = list.Where(s=>s.Age > 18) // 筛选
.OrderBy(o=>o.Name) // 排序
.Select(s=>s.Name) // 查询
.Take(10); // 取前10条,分页用
// 复杂查询(包括:连接查询、分组查询、聚合查询、嵌套查询 等)
var groupbyage = list.GroupBy(s=>s.Age) // 统计年龄
.Select(s=> new {Age = s.Key, Count=s.Count()}));
// 查询结果处理
var rellist = list.ToList(); // 转换为List
var firstStudent = list.ForstOrDefault(); // 取第一个
var isAnyAdult = list.Any(a=>a.Age>18); // 是否有满足条件的
// Single?
// Deferred Execution 延迟执行
var querys = list.Where(w=>w.Age > 18); // 不要立即ToList
foreach(var item in querys){
Console.WriteLine(item.Name); //
}
Linq To Objects 和 Linq To SQL
// Linq To Objects 用于在内存中对集合进行查询
var query1 = from student in list
where student.Age > 18
select student;
// Linq To SQL 用于与数据库进行交互查询
var query2 = from student in dbContext.Students
where student.Age > 18
select student;
|