1.LINQ基本操作

Linq的基本操作

在.NET类库中,LINQ相关类库都在System.Linq命名空间下,该空间下提供支持使用LINQ进行查询的类和接口,其中最主要的两个类和两个接口;

IEnumerable接口:它表示可以查询的数据集合,一个查询通常是逐个对集合中的元素进行筛选操作,返回一个IEnumerable对象用来保存查询结构

IQueryable接口,它继承IEnumerable接口,表示一个可以查询的表达式目录树

Enumerable类:它通过IEnumerable提供从扩展方法实现LINQ标准查询运算。包括过滤,导航,排序,查询,联合,求和,最大值,最小值等操作。

Queryable类:它通过对IQueryable提供扩展方法,实现LINQ运算。包括过滤,导航,排序,查询,联合,求和,最大值,最小值等操作。

关键字功能
From指定要查找的数据源及范围变量,多个from子句则表示从多个数据源中查找数据
Select指定要查询返回的目标数据,可以指定任何类型,甚至是名类型
Where指定元素的筛选条件,多个where子句则表示并列条件。必须全部满足才能入选
Orderby指定元素的排序字段和排序方式,当有多个排序字段时,由字段顺序确定主次关系,可以指定升序和降序两种排序方式
Group指定元素的分组字段
Join指定多个数据源的关联方式
//From子句语法 
//form localvar in dataSource
//from的两个功能
//1.指定查询采用的数据源
//2//定义一个本地变量,表示数据源中的单个元素
//注意:如果没有特别需要,不用指定类型的本地变量,让编译器根据数据类型来自动判断

int[] arr=[5,6,7,9,7,20,15,39];//初始化数组
//定义查询语句
var ql=from val in arr select val//select返回目标数据
foreach(var item in q1)
{
    System.Console.WirteLine(item)
}






//Select子句的应用:用来指定目标数据的
//语法:Select element.

//创建并初始化一个学生数组
Student[] s=
{
    new Student("test",25);
    new Student("test",25);
    new Student("test",25);
    new Student("test",25);
    new Student("test",25);
}
//linq查询1
var query1 =from val in s select val
foreach(Student item in query)
{
    Console.WriteLine(item.ToString)
}

//查询学生的姓名
var query2 =from val2 in s select val2.Name;
foreach(Student item in query)
{
    Console.WriteLine("{0}",item)
}






//用Where子句指定条件过滤筛选
//语法:
//where expression;返回布尔值 true/false
    int[] arr={1,2,3,4,5,6,7,8,9,10,11,12,13};
    //查询arr数据中所有大于6的元素
    var q1=from val in arr where val>6 select val;
    foreach(var item in q1)
    {
        Consloe.WriteLine(tim)
    }    
    //查询大于6并且小于20的数据才能作为最终返回结果
     var q1=from val2 in arr where (val2>6 )&&(val2<20) select val2;
       //可以使用多个并列的where子句替换上面的逻辑表达式
       //多个where、子句必须同时满足才能作为最终返回的目标数据
       var q2=from val2 in arr
       where var2<20
       where var<40
       select val2;
       
       
       
       
       
       //orderby子句排序
       int[] arr={1,2,3,56,12,92,22,39,60.200.79};
       //默认排序是:升序
       var q1=from val1 in arr
       where val1>15 orderby val1 descending // 降序排序
       select val1;
       
       foreach(var item in q1)
       {
           Console.WriteLine("{0}",item)
       }
       
       
       var q1=from val1 in arr
       where val1>15 orderby val1.Name.Length  ascending // 升序排序
       select val1;
       
       foreach(var item in q1)
       {
           Console.WriteLine("{0}",item)
       }
       
       
       
       
       
       
       //group子句分组
       Student[] s=
       {
           new Student("test","男",20);
           new Student("test","男",20);
           new Student("test","男",20);
           new Student("test","男",20);
           new Student("test","男",20);
           new Student("test","男",20);
           new Student("test","男",20);
       }
 //查询student中所有元素,并按照学生性别进行分组
 var query =from val in s
 group val by val.Sex
 
 foreach(var item in query)
{
    Console.Writeine(item.Key+":")性别
    foreach(var tiem1 in item)
    {
        Console.WriteLine(time)
    }
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq2363894951

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值