static void Main(string[] args)
{
string[] words = { "zero", "one", "two", "three", "four" };
int[] numbers = { , , , , }; string[] names = { "Robin", "Ruth", "Bob", "Emma" };
string[] colors = { "Red", "Blue", "Beige", "Green" }; string[] abbc = { "a", "b", "b", "c" };
string[] cd = { "c", "d" }; #region 聚合 立即执行 //Console.WriteLine(numbers.Sum());//10
//Console.WriteLine(numbers.Count());//5
//Console.WriteLine(numbers.Average());//2
//Console.WriteLine(numbers.LongCount(c => c % 2 == 0));//3
//Console.WriteLine(words.Min(word => word.Length));//3
//Console.WriteLine(words.Max(word => word.Length));//5
//Console.WriteLine(numbers.Aggregate("seed", (current, item) => current + item, result => result.ToUpper()));//SEED01234 #endregion #region 连接 延迟执行 流式数据 //var result = numbers.Concat(new int[] { 5, 6, 7, 8, 9 });
//foreach (var i in result)
//{
// Console.WriteLine(i);//0,1,2,3,4,5,6,7,8,9
//} #endregion #region 转换 object[] allStrings = { "these", "are", "all", "strings" };
object[] notAllStrings = { "number", "at", "the", "end", }; ////延迟执行 流式数据
////allStrings.Cast<string>();//强转,生成 IEnumerable<string> "these", "are", "all", "strings",转换失败则抛出异常
////allStrings.OfType<string>();//尝试转换,生成 IEnumerable<string> "these", "are", "all", "strings", 过滤掉转换失败的元素
////notAllStrings.Cast<string>();
////notAllStrings.OfType<string>(); ////立即执行
//numbers.ToArray();
//numbers.ToList();
//words.ToDictionary(s => s.Substring(0, 2)).Print();//[ze,zero],[on,one]....
//var result = words.ToLookup(word => word[0]); ///*
// * z:zero
// * o:one
// * t:two,three
// * f:four
// *
// */
//foreach (var item in result)
//{
// Console.WriteLine(item.Key);
// foreach (var s in item)
// {
// Console.WriteLine("--" + s);
// }
//} ////words.ToDictionary(word => word[0]);//抛出异常,每个键只能有一个元素,所以在遇到"t"时转换失败 #endregion #region 元素操作符 立即执行 //Console.WriteLine(words.ElementAt(2));
//Console.WriteLine(words.ElementAtOrDefault(10)); //words.First();
//words.First(f => f.Length == 3);
//words.FirstOrDefault(f => f.Length > 10); //words.Last(); //words.Single();
////... #endregion #region 相等操作符 立即执行 //var b1 = words.SequenceEqual(new string[] { "zero", "one", "two", "three", "four" });//true
//var b2 = words.SequenceEqual(new string[] { "ZERO", "one", "Two", "three", "four" });//false
//var b3 = words.SequenceEqual(new string[] { "Zero", "one", "Two", "three", "four" }, StringComparer.OrdinalIgnoreCase);//true
//Console.WriteLine($"{b1},{b2},{b3}"); #endregion #region 生成 延迟执行 流式处理 //numbers.DefaultIfEmpty();//{ 0, 1, 2, 3, 4 }
//new int[0].DefaultIfEmpty();//{0}
//new int[0].DefaultIfEmpty(100);//{100}
//Enumerable.Range(0, 9);//{0,1,2,3,4,5,6,7,8}
//Enumerable.Repeat(99, 3);//{99,99,99}
//Enumerable.Empty<int>();//一个类型为 IEnumerable<int> 的空序列 #endregion #region 分组 延迟执行 缓存数据 当迭代分组的结果序列时,消费的是整个输入序列 //ToLookup算是其中一个 //words.GroupBy(word => word.Length);
//var result = words.GroupBy(word => word.Length, word => word.ToUpper()); /*
* 4:ZERO,FOUR
* 3:ONE,TWO
* 5:THREE
*/
//foreach (var item in result)
//{
// Console.WriteLine(item.Key+":");
// item.Print();
//} //var result = words.GroupBy(word => word.Length, (key, g) => key + ":" + g.Count());
//foreach (var item in result)
//{
// item.Print();//4:2,3:2,5:1
//} #endregion #region 连接 延迟执行,流式处理左边序列,对于右边序列,在请求第一个结果时变读取其全部内容 //names.Join(colors, left => left[0], right => right[0], (left, right) => left + ":" + right).Print();
//Console.WriteLine("**************");
//names.GroupJoin(colors, left => left[0], right => right[0], (left, right) => left + ":" + string.Join(",", right)).Print(); #endregion #region 分部 延迟执行 流式处理 //words.Skip(1).Take(2); //words.TakeWhile(word => word.Length <= 4); //words.SkipWhile(word => word.Length <= 4); #endregion #region 投影 延迟执行 //words.Select(word => word.Length); //index 表示当前元素在原序列中的索引
//words.Select((word, index) => index + ":" + word).Print();//0:zero,1:one,2:two... //将序列中的每个元素都投影到一个新的序列中
//words.SelectMany(word => word.ToArray()).Print();//z,e,r,o,o,n,e,t,w,o,t,h,r,e,e,,f,o,u,r /*
* one
* two
* two
* three
* three
* three
* four
* four
* four
* four
*
*/
//words.SelectMany((word, index) => Enumerable.Repeat(word, index)).Print(); //投影顺序:先是每个序列的第一个元素,接着是每个序列的第二个元素,直到任意一个源序列到达末尾,结果序列都将停止生成
//names.Zip(colors.Take(3), (left, right) => left + ":" + right).Print(); #endregion #region 数量 立即执行 words.All(word => word.Length > );//true
words.All(word => word.Length > );//false
words.Any();//true
words.Any(word => word.Length == );//false
words.Contains("ONE", StringComparer.OrdinalIgnoreCase);//true #endregion #region 过滤 延迟执行 流式数据 //OfType 也算过滤 //words.Where(word => word.Length > 3);
//words.Where((word, index) => index < word.Length).Print();//four 的索引是 4,长度是 4,所以不会打印出来 #endregion #region 基于集的操作符 延迟执行 //流式处理
//abbc.Distinct().Print();//a,b,c //四种操作都有该方式的重载
abbc.Distinct(StringComparer.OrdinalIgnoreCase).Print();//a,b,c //abbc.Union(cd).Print();//a,b,c,d //左序列流式处理,有序列缓存处理
//abbc.Intersect(cd).Print();//c
//abbc.Except(cd).Print();//a,b #endregion #region 排序 延迟执行 缓存处理 words.OrderBy(word => word.Length);
words.OrderByDescending(word => word.Length);
words.OrderBy(word => word.Length).ThenBy(word => word);
words.Reverse(); #endregion Console.ReadKey();
}

Linq 大合集的更多相关文章

  1. Lucene搜索方式大合集

    package junit; import java.io.File; import java.io.IOException; import java.text.ParseException; imp ...

  2. 【收藏】Java多线程/并发编程大合集

    (一).[Java并发编程]并发编程大合集-兰亭风雨    [Java并发编程]实现多线程的两种方法    [Java并发编程]线程的中断    [Java并发编程]正确挂起.恢复.终止线程    [ ...

  3. [题解+总结]动态规划大合集II

    1.前言 大合集总共14道题,出自江哥之手(这就没什么好戏了),做得让人花枝乱颤.虽说大部分是NOIP难度,也有简单的几道题目,但是还是做的很辛苦,有几道题几乎没思路,下面一道道边看边分析一下. 2. ...

  4. [题解+总结]NOIP动态规划大合集

    1.前言 NOIP2003-2014动态规划题目大合集,有简单的也有难的(对于我这种动态规划盲当然存在难的),今天就把这些东西归纳一下,做一个比较全面的总结,方便对动态规划有一个更深的理解. 2.NO ...

  5. 从零开始学数据分析,什么程度可以找到工作?( 内附20G、5000分钟数据分析工具教程大合集 )

    从零开始学数据分析,什么程度可以找到工作?( 内附20G.5000分钟数据分析工具教程大合集 )   我现在在Coursera上面学data science 中的R programming,过去很少接 ...

  6. 直接拿来用!Facebook移动开源项目大合集

    直接拿来用!Facebook移动开源项目大合集 时间:2014-04-22 15:37 作者:唐小引 随着iOS依赖管理工具CocoaPods和大量第三方开源库成熟起来,业界积累了大量的优秀开源项目. ...

  7. python字符串操作实方法大合集

    python字符串操作实方法大合集,包括了几乎所有常用的python字符串操作,如字符串的替换.删除.截取.复制.连接.比较.查找.分割等,需要的朋友可以参考下:   #1.去空格及特殊符号 s.st ...

  8. 【Oracle教程资源大合集】Oracle数据库免费学习资源汇总

    Oracle的产品非常丰富,各类学习资源也五花八门,本文将介绍Oracle官方的免费教程与风哥整理的Oracle视频教程: 1.Oracle帮助中心 Oracle帮助中心也称为Oracle文档中心,这 ...

  9. Android软件开发之盘点全部Dialog对话框大合集(一)

    对话框大合集 今天我用自己写的一个Demo和大家具体介绍一个Android中的对话框的使用技巧. 1.确定取消对话框 个button   通过调用setPositiveButton方法和 setNeg ...

随机推荐

  1. 【python学习笔记】4.字典:当索引不好用时

    [python学习笔记]4.字典:当索引不好用时 字典是python中唯一内建的map类型 创建: key可以为任何不可改变的类型,包括内置类型,或者元组,字符串 通过大括号: phonebook={ ...

  2. js实现二叉树

    //binary tree//add order remove findfunction tree() { var node = function(key) {  this.left = null;  ...

  3. PAT乙级-1041. 考试座位号(15)

    每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位.正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座 ...

  4. 让你的网站high起来

    最初是在陌小雨的网站上看见这个功能,赶脚很牛逼的样子,于是给自己的网站加上了.在我网站首页的轮播图上面那个按钮就能实现这个功能,当然这里你点击右边的这个链接也可以看到效果——>点此嗨一下. 效果 ...

  5. 记录一则ASM实例阻塞,rbal进程异常的案例

    1.故障现象描述 2.确认故障现象 3.排查ASM层面 4.解决问题 1.故障现象描述 环境:AIX 7.1 + Standalone Oracle 11.2.0.4 现象:客户反映某11g版本的AD ...

  6. logback读取src/test/resource下的配置文件

    import java.io.File; import java.net.URISyntaxException; import java.util.Map; import java.util.Prop ...

  7. java必学的5种排序算法

    第一种冒泡排序 第二种 选择排序 第三种.插入排序

  8. memcache图形化管理工具MemAdmin

    给大家介绍一款 memcache图形化管理工具: MemAdmin 下载地址: http://www.junopen.com/memadmin/ wget http://www.junopen.com ...

  9. beta冲刺1

    前言:这篇算是开始补之前的开端,毕竟beta阶段我们从前面开始就有在陆续做了. 今天的工作: 接收了新成员*1,然后几个人聚了一下,并且讨论了一下目前遇到的问题,以及目前需要处理的问题. 目前遇到的问 ...

  10. Beta No.6

    今天遇到的困难: github服务器响应很慢 推图的API接口相应较慢,超过了初始设定的最大延迟时间,导致了无法正确返回图片 ListView滑动删除Demo出现了某些Bug,这些Bug可能导致了某些 ...