Linq处理List数据

来源:互联网 发布:php自动加载类 编辑:程序博客网 时间:2024/04/19 11:36
概述:LINQ又称为语言集成查询,是一种类似于SQL的一种查询语言。语言集成查询让开发人员可以使用.NET程序语言(如C#)去查询数据源,主要数据源为内存中的集合对象、ADO.NET数据集、数据库以及XML,开发人员不用去分门别类地学习众多的查询语法就可以轻松地查询异构数据源。

三种表现形式:复合查询、Lambda表达式以及混合查询。

  1、查询集合数据方法依次为:

  •     varresult=from n in dataList orderby n.TimeWrittendescending select n;       

  //可以将n看做是dataList,得到的结果是dataList里面所有值按时间字段的降序排列。

  •     varresult=dataList.Select(p=>new{p.ID,p.Name,p.TimeWritten});

  //Lambda表达式由匿名方法演变而来。这段Code中p为参数,多个参数可用(p,m..)表示。"=>"为推出符号,后面为返回值。该事例的返回值为对象中指定的字段。

  •     varresult=from n in dataList select n.OrderByDescending(p=> p.TimeWritten); 

   //查询集合所有数据按照时间字段降序来排序。升序为OrderBy()。

 

  2、删除数据

   List<NewSingle>dataList=new List<NewSingle>();

   NewSingle single=dataList.Single(p=>p.ID==1);

   dataList.DeleteOnSubmit(NewSingle);

   dataList.SubmitChanges();

  3、插入数据

   NewSingle single=new NewSingle ();

   single.Name="Test1";

  single.TimeWritten=this.DateTime.Now.ToString();

  single.Subject="subject";

  dataList.InsertOnSubmit(single);

  dataList.SubmitChanges();

  4、修改数据

   NewSingle single=from n indataList where n.ID == 3 select n;

    single.Name="Test2";

    single.TimeWritten="2011-3-17";

    single.Subject="subject2";

   dataList.SubmitChanges();

   注:linq中不支持Convert转换。

  5、查询绑定DropDownList

   var data=from n in dataList select new {Name=n.Name,ID=n.ID};

   DropDownList1.DataTextField="Name";

   DropDownList1.DataValueField="ID";

   DropDownList1.DataSource=data;

   DropDownList1.DataBind();

  6、绑定GridView

   GridView1.DataSource=dataList.Select(p=>p);

   GridView1.DataBind();

  7、表联接

   var result=from a in mytest.stuInfo join b inmytest.stuMarks on a.stuNo equals b.stuNo (into c) select new{Name=a.stuname,b.writtenExam};

  

   8、其他方法

  • 计算
  • Aggregate 对序列执行一个自定义方法
  • Average 计算数值序列的平均值
  • Count 返回查询结果数据总数
  • LongCount 返回查询结果的项目数
  • Max()/Min  返回最大值/最小值

    连接

  • Concat 将两个序列连成一个序列

    转换

  • Cast  将序列中的元素转换成制定类型
  • OfType 筛选序列中指定类型的元素
  • ToArray 从序列返回一个数组
  • ToDictionary  从序列返回一个字典
  • ToList 从序列返回一个列表
  • ToLookup  从序列返回一个查询
  • ToSequence 返回一个IEnumerable序列

    元素

  • DefaultIfEmpty 为空序列创建默认元素
  • ElementAt  返回序列中指定索引的元素
  • ElementAtOrDefault 返回序列中指定索引的元素,或者如果索引超出范围,则返回默认值
  • First 返回序列中的第一个元素
  • FirstOrDefault 返回序列中的第一个元素,或者如果未找到元素,则返回默认值
  • Last 返回序列中的最后一个元素
  • LastOrDefault 返回序列中的第一个元素,或者如果未找到元素,则返回默认值
  • Single  返回序列中的单个元素
  • SingleOrDefault 返回序列中的单个元素,或者如果未找到元素,则返回默认值

    操作符

  • SequenceEqual  比较两个序列看其是否相等

    生成

  • Empty  生成一个空虚列
  • Range 生成一个制定范围的序列
  • Repeat 通过将某项目重复制定次数来生成一个序列

    联接

  • OrderBy  以升序按值排列序列
  • OrderByDescending  以降序按值排列序列
  • ThenBy  升序排列已排序的序列
  • ThenByDescending 降序排列已排序的序列
  • Reverse  点到序列中项目的顺序

    分区

  • Skip  返回跳过制定数目项目的序列
  • SkipWhile  返回跳过不满足表达式项目的序列
  • Take  返回具有指定书目项目的序列
  • TakeWhile 返回具有满足表达式项目的序列

    投影

  • Select  创建部分序列的投影
  • SelectMany 创建部分序列的一对多投影

   限定符

  • All  确定序列中的所有项目是否满足某个条件
  • Any  确定序列中是否有任何项目满足条件
  • Contains  确定序列是否包含指定项目

   限制

  • Where 筛选序列中的项目

   设置

  • Distinct  返回无重复项目的序列
  • Except 返回代表两个序列差集的序列
  • Intersect 返回代表两个序列交集的序列
  • Union  返回代表两个序列交集的序列

    常用 :

  • DeleteAllOnSubmit<T>(object) 删除T类型的对象
  • Where() 条件查询返回bool
  • GroupBy() 分组
  • Skip(number)
  • Take(number)
  • TakeWhile()
  • SkipWhile()
  • ThenBy(s=>s.Name)复合排序,出现在多字段列表中,置于在OrderBy后面
  • Average()
  • Sum() 总和 
  • Range()  例:num=Enumerable.Range(1,10)从1开始产生十个数据
  • Repeat(重复值,重复次数) 生成重复项
  • SubString(n,m) 从n开始截取m条数据

 

0 0
原创粉丝点击