Linq学习<一>
lambda查询语法: var result =arrarylist.where(n=>n.contains("l")) 简化的委托方法实例
linq查询结构:
var result = from ------- in arrayList
where------
(order-------)
select -------
有点像sql写法:select * from table name where .我们可以简答记成将sql中select放在后面
var是C#中的一个新关键字,用于声明一般的变量类型,特别适合于包含LINQ
查询的结果。var关键字告诉C#编译器,根据查询推断结果的类型。这样,就不必提前声明从LINQ
查询返回的对象类型了——编译器会推断出该类型
下面例子张的数据源是前面声明的字符串数组stringArray。变量items只是数据源中某一元素的代表,类似
于foreach语句后面的变量名。指定from子句,就可以只查找集合的一个子集,而不用迭代所有的
元素。
- public void test()
- {
- Console.WriteLine("-----------Linq first Example------------------");
- string[] stringArray = new string[] {"cat","litter","cot","dog","love","like" };
- var result = //linq way,查询语法
- from items in stringArray
- where items.StartsWith("l")
- select items;
- foreach (var item in result)
- {
- Console.WriteLine(item);
- }
- //,var是C#中的一个新关键字,用于声明一般的变量类型,特别适合于包含LINQ查询的结果。var关键字告诉C#编译器,根据查询推断结果的类型
- }
linq是一种查询语法,还有一种方式语法,就是lambda,用起来更方便
- public void lambdaTest()
- {
- Console.WriteLine("-----------Lamada text------------------");
- string[] stringArray = new string[] { "cat", "litter", "cot", "dog", "love", "like" };
- var result = stringArray.Where(n => n.StartsWith("l")); //Lambda way查询语法
- foreach (var item in result)
- {
- Console.WriteLine(item);
- }
- }
2.linq排序
- public void LinqSortTest()
- {
- Console.WriteLine("-----------result after sort-------------------");
- string[] stringArray = new string[] { "cat", "litter", "cot", "dog", "love", "like" };
- var result = //linq way,查询语法
- from items in stringArray
- where items.StartsWith("l")
- // orderby items descending //ascending 默认从A——Z
- orderby items.Substring(items.Length-1) //从items的倒数第二字母开始排序
- select items;
- foreach (var item in result)
- {
- Console.WriteLine(item);
- }
- }
用lamabda排序
- public void lambdaOrderTest()
- {
- Console.WriteLine("-----------lambdaOrderTest-------------------");
- string[] stringArray = new string[] { "cat", "litter", "cot", "dog", "love", "like" };
- var result =stringArray.OrderBy(n=>n).Where(n=>n.Contains("l"));
- // var result = stringArray.OrderByDescending(n => n).Where(n=>n.Contains("l"));
- // var result = stringArray.OrderBy(n => n.Substring(n.Length - 1)).Where(n=>n.StartsWith("l"));
- foreach (var item in result)
- {
- Console.WriteLine(item);
- }
- }
3.用ramdon生成一个大的int数组进行操作
- public void SearchDataFromABigArray()
- {
- Console.WriteLine("--------------Get Data from a big array----------------------");
- int[] intArray = GeneratorBigArray(12345678);
- var result = from items in intArray
- where items < 10000
- select items;
- foreach (var item in result)
- {
- Console.WriteLine(item);
- }
- }
linq基本寒素:sum,max,min,averge 注意sum时如果数据过大,对于32位会产生溢出错误,linq有Longcount(),也就是将结果转为64位,防止溢出错误,如下:
Console.WriteLine(result.Sum(n=>(long)n));
- public void UsingFunctionOfLinq()
- {
- Console.WriteLine("----------------------using fuction in linq--------------------------");
- int[] intArray = GeneratorBigArray(12345678);
- var result = from items in intArray
- where items > 1000
- select items;
- Console.WriteLine("sum is:");
- Console.WriteLine(result.Sum(n=>(long)n));
- Console.WriteLine("max is:");
- Console.WriteLine(result.Max());
- Console.WriteLine("min is:");
- Console.WriteLine(result.Min());
- Console.WriteLine("average is :");
- Console.WriteLine(result.Average());
- }
生成大数据函数:
这里采用radom(0)来生成不一样的数据,赋值给int数组,
- private int[] GeneratorBigArray(int p)
- {
- Random genertor = new Random(0);
- int[] array = new int[p];
- for (int i = 0; i < p - 1; i++)
- {
- array[i] = genertor.Next();
- }
- return array;
- }
Linq学习<一>的更多相关文章
- Linq学习工具及Lamada表达式
好东西.转载一个.以备学习 Linq学习工具: http://www.linqpad.net/ Lamada表达式: Func<int, int, int> IntPow = (x ...
- linq学习
最全的linq学习文章: http://www.cnblogs.com/heyuquan/p/Linq-to-Objects.html
- (转)Linq学习笔记
写在前面 最近在看Linq,在博客园看到这篇文章,写的通俗易懂,转来和大家一起做个分享.原文地址http://www.cnblogs.com/goscan/archive/2011/05/05/Lin ...
- C#之Linq学习笔记【转】
写在前面 其实在09年就已经学习过Linq了,并被她那优美的语法所吸引,只是现在所在的公司还在使用VS2005在.Net2.0的框架下面的开发,所以Linq也很久没有用过了,最近看部门的同事对这个有些 ...
- LINQ to XML LINQ学习第一篇
LINQ to XML LINQ学习第一篇 1.LINQ to XML类 以下的代码演示了如何使用LINQ to XML来快速创建一个xml: public static void CreateDoc ...
- LINQ学习系列-----1.3 扩展方法
这篇内容继续接着昨天的Lambda表达式的源码继续下去.昨天讲了Lambda表达式,此篇讲扩展方法,这两点都是Linq带来的新特性. 一.扩展方法介绍 废话不多说,先上源码截图: 上图中Ge ...
- LINQ学习系列-----2.3 迭代器带来的延迟查询
此篇博文承接上一篇博文: LINQ学习系列-----2.2 迭代器 一.第一次执行 废话不多说,上源码: 执行结果下图: 为什么会这样?其实原因很简单 fro ...
- Linq学习以及简单用法
Linq学习 Linq(language Intergrated Query)即语言集成查询 LINQ是一组语言特性和API,使得你可以使用统一的方式编写各种查询.用于保存和检索来自不同数据源的数据, ...
- linq学习笔记
最近在学习linq的一些基础知识,看了c#高级编程及阅读了园子内部几篇优秀的博文,有所体会,感觉应该记录下来,作为以后复习使用.都是一些最基础的知识,大致分为三个部分:linq预备知识:linq查询: ...
- 【转】【收藏】LINQ学习心得分享--------(二)LINQ语法详解
原地址:http://blog.csdn.net/xuemoyao/article/details/8053444 通过上一章节的学习,相信大家已经掌握了学习LINQ的前期的准备知识.在这一节里, ...
随机推荐
- 网络服务器带宽Mbps、Mb/s、MB/s的区别
例如所谓 10M 带宽,其实是指 10Mbps (兆比特) 计算带宽理论最快下载速度:10÷8=1.25MB/s 那么100M的带宽最快下载速度是12.5MB/s. 但这只是理论上的速度,在这个数值附 ...
- 复制书稿(book) (二分,贪心+dp)
复制书稿(book) 时间限制: 1 Sec 内存限制: 128 MB提交: 3 解决: 1[提交][状态][讨论版][命题人:quanxing] 题目描述 现在要把m本有顺序的书分给k个人复制( ...
- EasyUI TreeJson
1. TreeJson str = GetTreeJsonByTable(dt, "); StringBuilder treeResult = new StringBuilder(); St ...
- php中的continue用法
continue 2 表示跳出两层 continue 默认跳出一层 if (count($content_arr) > 0 ) { // 获取相应的goods数据 $goodsdata = ar ...
- Rest之路 - Rest架构中的重要概念
资源 在Rest的架构之内,讲一切内容都是为资源.每一个资源都被定义为一个URI. 格式: <protocol>://<service-name>/<ResourceTy ...
- Linux - apache 服务
暂时关闭 iptables 防火墙 [root@sch01ar ~]# systemctl stop iptables.service 暂时关闭 firewall 防火墙 [root@sch01ar ...
- windows重启mysql命令
开始->运行->cmd 停止:net stop mysql 启动:net start mysql 前提MYSQL已经安装为windows服务
- HTTP协议头域详解
HTTP协议头域详解 Requests部分 Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/html Accept-Charset 浏览器可以接受的字符编 ...
- keil的使用:新建Project
新建项目--->新建文件夹----->把新建的项目放在自己的文件夹中------>选择开发板------>添加开发板的驱动文件---->main函数 项目分组基本如图,S ...
- Android 从本地图库或拍照后裁剪图片并设置头像
在QQ和微信等应用都会有设置头像,一般都是从本地图库选取或相机拍照,然后再截图自己喜欢的部分,然后设置.最后一步把截取好的图片再保存到本地,来保存头像.为了大家使用方便,我把自己完整的代码贴出来,大家 ...