增加的 LINQ 表达式
来源:互联网 发布:apache cgi原理 编辑:程序博客网 时间:2024/05/22 19:27
我们一般说的 LINQ 是指 LINQ 表达式,但除了表达式以外,LINQ 查询操作更方便,凡是实现了接口 IEnumerable<T> 或 IQueryable<T> 的,都可以用 LINQ 查询操作。
1、投影
Select
var items = arr.Select(i => i);
foreach (var m in items)
{
Console.WriteLine(m.ToString() + "<br>");
}
显示:1 2 3 7 8 9 6 5 4
如果改变 Lambda 表达式那句为 var items = arr.Select(i => i + 3);,那么输出时每一项元素的值将比现有基础上大 3,即:4、5、6、10、11、12、9、8、7。
SelectMany
int[] arr2 = { 3, 2, 1 };
List<int[]> list = new List<int[]>();
list.Add(arr);
list.Add(arr2);
var items = list.SelectMany(i => i);
foreach (var m in items)
{
Response.Write(m.ToString() + "<br>");
}
显示:1 2 3 7 8 9 6 5 4 3 2 1
2、聚合
int[] arr = new int[] { 5, 1,2,3};
Console.WriteLine(arr.Aggregate((s, m) => ((s < 3) ? 0 : s) + ((m % 3 == 0) ? m : 0)) + "<br>");
Aggregate 是自定义聚合计算,功能强大。
上面的 Lambda 表达式 (s, m) =>((s < 3) ? 0 : s) + ((m % 3 == 0) ? m : 0)。
表示对每个元素执行这个函数:执行第一个元素时,把第一个元素的值传给 s 和 m;执行后面的元素时,把上一个元素执行时的结果传给 s,把当前元素值传给 m。
3、筛选
Where
var items = arr.Where(i => i > 3 && i < 8);
foreach (var m in items)
Console.WriteLine(m.ToString() + "<br>");
}
Lambda 表达式 i => i > 3 && i < 8 表示只选择 > 3 且 < 8 的元素,显示为:7 6 5 4
上面的where调用等价与如下的子句:
var elements=from ele in arr
where eld>= 3 && ele < 8
select ele;
4、排序
OrderBy
var items = arr.OrderBy(i => i);
按 1、2、3……排序。
OrderByDescending
var items = arr.OrderByDescending(i => i);
按 9、8、7……排序。
Reverse
var items = arr.Reverse();
倒序,本例中按 4、5、6……输出。
5、组合
可以把投影、聚合、筛选、排序组合起来使用。
var items = arr.Where(i => i > 3).OrderBy(i => i);
把 > 3 的元素按升序排列,显示为:
6、Distinct为一个序列消除元素重复。
使用ToArray和ToList操作符,可以将序列转换为类型化的数组和列表。
ToDictionary操作符创建了一个词典,并使用键值组织数据。
7、一些标准的操作符可以对数据进行数学操作:这就是聚合操作符
n Count,获取序列中元素的个数
n Sum, 计算元素之和
n Min 和 Max, 获取序列中元素的最大值很最小值
- 增加的 LINQ 表达式
- 简单的linq 表达式
- Linq表达式的简单应用
- 匿名表达式,lambda表达式,Linq的示例
- Linq查询 待增加
- linq 表达式树的构建 Expression.Lambda
- (14)使用查询表达式的LINQ
- 简单的linq和正则表达式
- linq 未能计算表达式的值
- 第十五章 使用查询表达式的LINQ
- 初步学习Linq的使用方法表达式
- LINQ To XML:获取,修改,增加,删除元素的属性
- 典型代码-linq 基本的增加记录操作
- Linq 表达式和labmda表达式
- 初识LINQ表达式
- 查询表达式(LINQ)简介
- 查询表达式(LINQ)简介
- LINQ 查询表达式
- 周报——JavaBean
- Java线程实现异步消息
- mp3播放器
- 用VS 2008 编译运行WxWidgets
- Spring.net学习
- 增加的 LINQ 表达式
- Android中的category大全
- 关于单群的一些知识扩展
- HtmlHelper学习
- WinAPI: WindowFromPoint- 获取指定点所在窗口的句柄
- 开通下Blog
- PHP面向对象的三大特性之封装性
- VS2005部署打包时如何加入自定义字体
- TermServDevices错误的解决方案