C# Linq语句快速上手

//查询表达式要以from字句开头,以select或group字句结束,第一个from字句和最后一个select字句或group字句之间,
// 可以包含一个或多个where字句,let字句,join字句,orderby子句和group子句,甚至还可以是from子句.
// 共有8个基本子句,如下:

// from子句:指定查询操作的数据源和范围变量
// select子句:指定查询结果得到类型和表现形式
// where子句:指定筛选元素的逻辑条件
// let子句:引入用来临时保存查询表达式中的字表达式结果的范围变量.
// orderby子句:对查询结果进行排序操作,包括升序和降序
// group子句:对查询结果进行分组.
// into子句:提供一个临时标识符. join子句,group子句或select子句可以通过该标识符引用查询操作中中的中间结果
// join子句:连接多个用于查询操作的数据源.


// from与select关键字       Select更类似一个return关键字,可以用特殊写法起到筛选的目的

int[] array = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
var Query1 = from i in array select i; //把array提取到i,不做筛选直接把i的元素赋值到Query1

//上面的代码相当于:
List<int> tmp = new List<int>();
for (int i = 0; i < array.Length; i++)
{
    tmp.Add(array[i]);
}
var Query2 = from n in array where n > 6 select n; //把array提取到n,再对n做筛选,再把筛选结果赋值到Query1
tmp.Clear();

//上面的代码相当于:
for (int i = 0; i < array.Length; i++)
{
    if (array[i] > 6)
    {
        tmp.Add(array[i]);
    }
}

//让两个数组中的同下标元素相加,并赋值到新的集合中
var Query3 = from i in array from n in array1 select i + n;

// where 关键字  where 是一个条件筛选语句
var Query5 =
    from i in array //提值
    where i < 5 //筛选
    select i; //赋值

var Query6 =
    from i in array         //提值
    where i < 8 && i > 3    //筛选
    select i + 1;           //赋值    

var Query7 = from i in array    //提值
    where IsEven(i)        //甚至可以用函数来筛选,但where关键句 调用的函数返回值必须是bool
    select i;          //赋值   
public bool IsEven(int i)
{
    return i % 2 == 0;
}

//let 关键字        该关键字本质上只是加多一道处理过程,在某些情况下可能会需要
var Query8 = from i in array
                let o = i % 2      //这里是一个处理语句,把所有元素求余,再放到o这个集合中
                where o == 0       //对求余结果进行筛选
                select o;          //赋值

//orderby 关键字    descending 降序  ascending 升序
var Query9 = from i in array
                orderby i descending   //descending 降序  ascending 升序
                select i;
textBox1.Clear();
foreach (var item in Query9)
{
    textBox1.Text += item + (item == 0 ? "" : " || ");
}

//group  by 关键字
var Query10 = from i in array
                where i < 9 && i > 1
                group i by i / 3;  //这有时会是一个多维集合,会把处理结果相同的分到一组,同时赋值
textBox1.Clear();
foreach (var item in Query10)
{
    foreach (var i in item)
    {
        textBox1.Text += i + "|";
    }
    textBox1.Text += "\r\n";
}

// into 关键字 这个关键字分开理解即可 in to 放到~  作用: 声明一个临时变量,将左边处理结果存放到右边的变量中 变量类型由编译器推导决定

var Query11 = from i in array
                where i < 9 && i > 1
                group i by i / 3 into n   //把左边的处理结果赋值到右边的临时变量n中
                from c in n
                select c;
// join 关键字 连接两个集合  equals 判断是否相等
int[] array = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int[] arrayint = new int[] { 1, 3, 5, 7 };
var Query12 = from i in arrayint
                where i < 7                       //选出比7小的元素
                join b in array on i equals b     //把array的元素加到b中,然后再把i和b中相同的元素留下
                select b;

未完待续..

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值