2个要点:

1.linq操作的集合必须实现IEnumerable接口,所以在这3.0之前为实现该接口的集合需通过Cast或TypeOf方法转换成可Linq的集合;

2.查询式和Lame那啥表达式都可以一起使用.那个方便用哪个,他们只在第一次使用时才会真正去查询;

   List<Employee> ils = new List<Employee>()
{
new Employee(){IDCode="jack5",Age=20,littleName="ab"},
new Employee(){IDCode="mike444",Age=12,littleName="aa"},
new Employee(){IDCode="mary5",Age=12,littleName="zs"},
new Employee(){IDCode="sm5555",Age=67,littleName="yb"},
new Employee(){IDCode="som",Age=67,littleName="cr"}
}; ArrayList als = new ArrayList()
{
new Department(){Name="jack",DepName="富士康"},
new Department(){Name="jack",DepName="華為"},
new Department(){Name="mary",DepName="騰訊"},
new Department(){Name="sum",DepName="移動"},
new Department(){Name="soom",DepName="聯通"}
}; #region 查詢語句 第三章,linq技術詳解
//帶有Into的group by語句
var va = from c in ils
group c by new { c.littleName, c.Age } into g
select new { Name = g.Key, ageC = g.Count() };
var va1 = ils.GroupBy(p => new { p.littleName, p.Age }).Select(p => new { name = p.Key, agec = p.Count() }); //顯示枚舉變量類型
var varT = from c in ils
join Department d in als on c.IDCode equals d.Name
select new { age = c.Age, depName = d.DepName };
var varT1 = ils.Join(als.Cast<Department>(), c => c.IDCode, p => p.Name, (c, p) => new { age = c.Age, depName = p.DepName }); //join語句
var varJoin = from c in ils
join Department d in als
on c.IDCode equals d.Name
into ao
select new { c.IDCode, sum = ao.Sum(p => p.DepName.Length) };
var varJoin1 = ils.GroupJoin(als.Cast<Department>(), a => a.IDCode, b => b.Name, (b, a) => new { b.IDCode, sum = a.Count() }); //Let和Where語句
var varLet = from c in ils
let names = c.IDCode + ":" + c.littleName
where names.Length > 5
select new { c.Age, names };
var varLet1 = ils.Select(a => new { a, names = a.IDCode + ":" + a.littleName })
.Where(p => p.names.Length > 5)
.Select(b => new { b.a.Age, b.names }); //Generator語句(多個 from),orderby語句
var varSelMany = from a in ils
from b in als.Cast<Department>()
orderby a.Age, a.Department descending
select new { a.IDCode, a.littleName, a.Age, b.DepName };
var varSelMany1 = ils.SelectMany(p => als.Cast<Department>().Select(a => new { p.Age, a.DepName })).OrderByDescending(a => a.Age).ThenByDescending(a => a.DepName); //group by
var varGroup = from p in ils
group p by p.Age
into a
select a.Key + ":" + als.Capacity; #endregion #region 延遲操作符詳解
//異常都是ArgumentNullException
//select,where都有兩個原型,另一個原型有索引參數
var varWhere = ils.Where((p, i) => i < 2); //分區操作符 take
var varTake = ils.Take(2); //TakeWhile 只要條件不符合就會跳出
var varTakeWhile = ils.TakeWhile((p, q) => p.IDCode.Length > 4); //skip 與take互補
var varSkip = ils.Skip(2); //skipwhile 與takewhile互補
var varSkipWhile = ils.SkipWhile((a, i) => a.IDCode.Length > 5 && i < 3); //串聯操作符
var varConcat = ils.Take(2).Concat(ils.Skip(2));
//concat只可以串聯兩個序列,當串聯多個序列的時候可以用SelectMany;
var varSelectMany1 = new[] { ils.Take(1), ils.Skip(1) }.SelectMany(s => s); //排序操作,第二個原型可以加參數,比較器,二次排序用thenby,orderbydesding類似
var varOrderby = ils.OrderBy(p => p.IDCode.Length); //reverse相反序列輸出
//Join和JoinGroup p119
IEnumerable<IGrouping<string,Employee>> items = ils.GroupBy(p => p.littleName);
IEnumerable<IGrouping<string,Department>> items1= ils.GroupBy(p => p.IDCode, q => q.Department); //集合操作符 distinct,union(并集區別于Concat),intersect(連接后重複元素的序列),except(刪除參數中與自己重複的元素)
var ca = ils.Distinct();
List<Employee> ils1 = ils.Take(2).ToList<Employee>();
ils1.Add(new Employee() { IDCode = "我加的", Age = 33, littleName = "xixi" });
foreach (var v in ils.Except(ils1))
{
Console.WriteLine(v.littleName);
} //元素操作符
var ilsDefaultIfEmpty = ils.Where(p => p.IDCode == "hehe").DefaultIfEmpty().First();
var ilsDefaultIfEmpty1 = ils.Where(p => p.IDCode == "hehe").DefaultIfEmpty(new Employee() { IDCode="heheid"}).First(); //生成操作符 Enumerable靜態方法Range,Repeat,
IEnumerable<int> EnumRange = Enumerable.Range(2, 20);
foreach (int i in EnumRange)
{
Console.WriteLine(i);
}
//p145 string str = string.Empty;
//cast,ofType,AsEnumerable()[將序列編程序列,適用于Linq To Sql] #endregion

  

Linq学习总结1--参考Linq技术详解的更多相关文章

  1. Linq学习(主要参考linq之路)----2LINQ方法语法

    方法语法:Fluent Syntax 方法语法是非常灵活和重要的.我们这里讲描述使用连接查询运算符的方式来创建复杂的子查询,方法语法的本质是通过扩展方法和Lambda表达式来创建查询. eg1: st ...

  2. CDN学习笔记二(技术详解)

    一本好的入门书是带你进入陌生领域的明灯,<CDN技术详解>绝对是带你进入CDN行业的那盏最亮的明灯.因此,虽然只是纯粹的重点抄录,我也要把<CDN技术详解>的精华放上网.公诸同 ...

  3. Linq实战 之 Linq to Sql及Entity Framework操作详解

    Linq实战 之 Linq to Sql及Entity Framework操作详解 一:linq to db的框架 1. linq to sql 2. linq to ado.net entity f ...

  4. Comet技术详解:基于HTTP长连接的Web端实时通信技术

    前言 一般来说,Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Ser ...

  5. SSE技术详解:一种全新的HTML5服务器推送事件技术

    前言 一般来说,Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Ser ...

  6. 腾讯技术分享:GIF动图技术详解及手机QQ动态表情压缩技术实践

    本文来自腾讯前端开发工程师“ wendygogogo”的技术分享,作者自评:“在Web前端摸爬滚打的码农一枚,对技术充满热情的菜鸟,致力为手Q的建设添砖加瓦.” 1.GIF格式的历史 GIF ( Gr ...

  7. 了解iOS消息推送一文就够:史上最全iOS Push技术详解

    本文作者:陈裕发, 腾讯系统测试工程师,由腾讯WeTest整理发表. 1.引言 开发iOS系统中的Push推送,通常有以下3种情况: 1)在线Push:比如QQ.微信等IM界面处于前台时,聊天消息和指 ...

  8. IPv6技术详解:基本概念、应用现状、技术实践(下篇)

    本文来自微信技术架构部的原创技术分享. 1.前言 在上篇<IPv6技术详解:基本概念.应用现状.技术实践(上篇)>,我们讲解了IPV6的基本概念. 本篇将继续从以下方面展开对IPV6的讲解 ...

  9. IPv6技术详解:基本概念、应用现状、技术实践(上篇)

    本文来自微信技术架构部的原创技术分享. 1.前言 普及IPV6喊了多少年了,连苹果的APP上架App Store也早已强制IPV6的支持,然并卵,因为历史遗留问题,即使在IPV4地址如果饥荒的情况下, ...

  10. Zookeeper系列二:分布式架构详解、分布式技术详解、分布式事务

    一.分布式架构详解 1.分布式发展历程 1.1 单点集中式 特点:App.DB.FileServer都部署在一台机器上.并且访问请求量较少 1.2  应用服务和数据服务拆分  特点:App.DB.Fi ...

随机推荐

  1. 2x2矩阵相乘模版

    由于Unity只有4x4矩阵,今天要做一个2x2矩阵的旋转,居然忘了顺序.故写下作为模版记录. 顺序: 下面是使用其进行旋转的C#代码: public struct Position { public ...

  2. faster alter table add column

    Create a new table (using the structure of the current table) with the new column(s) included. execu ...

  3. IntelliJ IDEA中使用综合使用Maven和Struts2

    在Intellij IDEA中手动使用Maven创建Web项目并引入Struts2 创建一个新的Maven项目 建好项目之后点击左下角的enable auto import 项目部署 在Moudule ...

  4. C语言复杂声明

    C语言复杂声明 First step int *f(); /* f:是一个函数,它返回一个指向int类型的指针*/ int (*pf)(); /* pf:是一个指向函数的指针,该函数返回一个int类型 ...

  5. JVM学习——编译OpenJDK

    最近在学习<深入理解java虚拟机 第二版>这本书.书中第一部分建议大家自己编译OpenJDK.抱着学习态度也来编译个玩一玩.下面进入正题. 1.编译环境介绍 操作系统 CentOS Li ...

  6. 【Todo】【读书笔记】机器学习-周志华

    书籍位置: /Users/baidu/Documents/Data/Interview/机器学习-数据挖掘/<机器学习_周志华.pdf> 一共442页.能不能这个周末先囫囵吞枣看完呢.哈哈 ...

  7. Html_Img元素 设置图片与其他元素横排高度一致

    <img id="numAdd" src="~/Images/jia.jpg" style="width:30px;height:30px;ve ...

  8. 20161028__严工笔记本安装Win2003

    1.Win2003的PE(不太明白 这里的PE指什么...)不支持 AHCI (会造成 安装的时候 出现 蓝屏) 到 BIOS 里面 把"AHCI"改成"兼容模式(com ...

  9. [讨论] 全新首发WIN7 32&64 WINSXS进一步精简批处理公测

    恶魔浮雕 发表于 2016-1-8 15:01:27 |https://www.itsk.com/forum.php?mod=viewthread&tid=362278&highlig ...

  10. Oracle新增客户端网络配置使用scott出现错误

    错误一   测试提示用户密码过期 解决方法:使用sys用户登录数据库 sqlplus sys/密码  as sysdba; 修改scott用户密码 alter user scott identifie ...