• 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,写的很好。

  • 相关阅读:
    记一次 Oracle 下的 SQL 优化过程
    用哈希简单封装unordered_map和unordered_set
    MATLAB直方图中bin中心与bin边界之间的转换
    【Jenkins】data stream error|Error cloning remote repo ‘origin‘ 错误解决【亲测有效】
    C语言之文件操作篇(2)
    2017年网易校招Java面试题
    浅谈vue2.0和vue3.0的区别
    ATF(TF-A) RSS-AP接口威胁模型-安全检测与评估
    【遮天】荒古禁地采取圣药,姬老自己走上绝路,故事扣人心悬
    【Python爬虫技巧】快速格式化请求头Request Headers
  • 原文地址:https://blog.csdn.net/yangwenxue1989/article/details/125845136