• C#基础教程(十五) Linq


    一、总述

    语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。借助 LINQ,查询成为了最高级的语言构造,就像类、方法和事件一样。LINQ 系列技术提供了针对对象 (LINQ to Objects)、关系数据库 (LINQ to SQL) 和 XML (LINQ to XML) 的一致查询体验。

    Linq查询语法:

    1、扩展方法语法:扩展方法+lambda表达式

    扩展方法语法(传输链):IEnumerabl query=源集合.Where(过滤,必须bool表达式).OrderBy(排序条件).Select(选择条件)

    2、声明式查询语法:类型SQL查询方式

    查询表达式:

    var 结果集 = from n in 数据源  where 过滤表达式 orderby 排序 select 投影(选择)


    二、语法

    1.where

    1. var res=resources.Where(r=>r.id==2&&r.name.Contains("小"));//扩展方法语法
    2. 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

    1. object[] data = { "one", 2, 3, "four", "five", 6 };
    2. var query = data.OfType<string>();

    4.复合from

    1. var res=from r in resources
    2. from s in students
    3. where r.id==s.id orderby r.name select r.id +r.name

    5.中间件排序 (orderby)

    1. //orderby
    2. var sick = from s in stu from t in het where s.name == t.name orderby s.age select s.name + t.name;
    3. //降序
    4. var res=from r in resources where r.id==2&&r.name.Contains("小") OrderByDescending(r => r.name) select r;
    5. 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)

    1. var tt = from r in stu group r by r.name;
    2. foreach(var group in tt)
    3. {
    4. foreach(var item in group)
    5. {
    6. MessageBox.Show(item.name);
    7. }
    8. }
    9. var countries = from r in stu
    10. group r by r.age
    11. into grderby g.Count() descending
    12. where g.Count() >= 2
    13. select new { age = g.Key };
    14. foreach (var item in countries)
    15. {
    16. MessageBox.Show(item.age);
    17. }

    8.cast

    1. List<object> list = new List<object> { "keyboard", "mouse", "joystick", "monitor" };
    2. var rest = list.Cast<string>().Select(r => r.Substring(0, 2));
    3. //cast用于control的datasoure,可实践一下
    方法C# 查询表达式语法
    Cast使用显式类型化范围变量,例如:from int i in numbers
    GroupBygroup … by 或 group … by … into
    GroupJoinjoin … in … on … equals … into …
    Joinjoin … in … on … equals …
    OrderByorderby
    OrderByDescendingorderby … descending
    Selectselect
    SelectMany多个 from 子句。
    ThenByorderby …, …
    ThenByDescendingorderby …, … descending
    Wherewhere

    参考:C# Linq详解_秦风附七月的博客-CSDN博客_c# linq,写的很好。

  • 相关阅读:
    服务器数据恢复—热备盘同步中断导致Raid5数据丢失的数据恢复案例
    vue大型电商项目尚品汇(前台篇)day05终结篇
    C#-多线程
    推荐一个日历转换开源工具库,支持C#、Java、PHP等主流的语言
    渲染器——快速Diff算法
    查看linux是多少位的
    CMMI5认证哪些企业可以申请
    要素类WKT文本获取
    算法笔记(四)从暴力递归到动态规划
    学习git博客
  • 原文地址:https://blog.csdn.net/yangwenxue1989/article/details/125845136