语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。借助 LINQ,查询成为了最高级的语言构造,就像类、方法和事件一样。LINQ 系列技术提供了针对对象 (LINQ to Objects)、关系数据库 (LINQ to SQL) 和 XML (LINQ to XML) 的一致查询体验。
Linq查询语法:
1、扩展方法语法:扩展方法+lambda表达式
扩展方法语法(传输链):IEnumerabl
2、声明式查询语法:类型SQL查询方式
查询表达式:
var 结果集 = from n in 数据源 where 过滤表达式 orderby 排序 select 投影(选择)
1.where
- var res=resources.Where(r=>r.id==2&&r.name.Contains("小"));//扩展方法语法
- var res=from r in resources where r.id==2&&r.name.Contains("小") select r;//查询表达式
2.用索引筛选
var res= resources.Where((r, index) => r.Name.StartsWith("小") && index % 2 != 0)
3.OfType
- object[] data = { "one", 2, 3, "four", "five", 6 };
- var query = data.OfType<string>();
4.复合from
- var res=from r in resources
- from s in students
- where r.id==s.id orderby r.name select r.id +r.name
5.中间件排序 (orderby)
- //orderby
- var sick = from s in stu from t in het where s.name == t.name orderby s.age select s.name + t.name;
- //降序
- var res=from r in resources where r.id==2&&r.name.Contains("小") OrderByDescending(r => r.name) select r;
- var res=from r in resources where r.id==2&&r.name.Contains("小") orderby r.name descending select r;
6.join
var res = from r in stu join t in het on r.age equals t.age select r;
7.分组(group)
- var tt = from r in stu group r by r.name;
- foreach(var group in tt)
- {
- foreach(var item in group)
- {
- MessageBox.Show(item.name);
- }
- }
- var countries = from r in stu
- group r by r.age
- into grderby g.Count() descending
- where g.Count() >= 2
- select new { age = g.Key };
- foreach (var item in countries)
- {
- MessageBox.Show(item.age);
- }
8.cast
- List<object> list = new List<object> { "keyboard", "mouse", "joystick", "monitor" };
- var rest = list.Cast<string>().Select(r => r.Substring(0, 2));
- //cast用于control的datasoure,可实践一下
| 方法 | C# 查询表达式语法 |
|---|---|
| Cast | 使用显式类型化范围变量,例如:from int i in numbers |
| GroupBy | group … by 或 group … by … into |
| GroupJoin | join … in … on … equals … into … |
| Join | join … in … on … equals … |
| OrderBy | orderby |
| OrderByDescending | orderby … descending |
| Select | select |
| SelectMany | 多个 from 子句。 |
| ThenBy | orderby …, … |
| ThenByDescending | orderby …, … descending |
| Where | where |