C#基础教程(十五) Linq

一、总述

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

Linq查询语法:

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值