- 浏览: 504463 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (329)
- [发布至博客园首页] (12)
- [随笔分类][01] .Net X (59)
- [随笔分类][20] Architecture (16)
- [随笔分类][21] Developer Logs (13)
- [网站分类]Windows 7 (1)
- [随笔分类][13] Oracle & .Net (7)
- [随笔分类][16] Love in China (14)
- [随笔分类][15] Development Tools (20)
- [随笔分类][18] Windows Phone (12)
- [随笔分类][12] Design & Pattern (17)
- [网站分类].NET新手区 (22)
- [网站分类]首页候选区 (2)
- [随笔分类][08] Windows (Server) (13)
- [随笔分类][02] CSLA.Net (3)
- [随笔分类][10] jQuery & javaScript (10)
- [随笔分类][11] SQL Server (4)
- [随笔分类][22] Enterprise Logs (3)
- [随笔分类][03] News (9)
- [随笔分类][19] Quality Assurance (2)
- [随笔分类][05] Silverlight (20)
- [随笔分类][14] Google Earth & .Net (6)
- [网站分类]非技术区 (9)
- [随笔分类][07] WWF (2)
- [随笔分类][04] SharePoint (1)
- [随笔分类][20] Analysis & Design (36)
- [随笔分类][06] WCF (5)
- [随笔分类][12] Architecture (1)
- [随笔分类][09] WPF (0)
- [随笔分类][17] VStudio & Expression (5)
最新评论
-
zhangyy130:
你好,我关于第二段的那个表视图、模型与图这三者的关系我没有看明 ...
UML模型的组成 -
guji528:
谢谢分享!
Enterprise Architect 基础应用 -
studentsky:
好文章,图文并茂!
WCF 第一个用 Visual Studio 2010 创建的WCF服务 -
chen975311486:
用哪个工具画的????
UML中对关系的描述 (二) -
frankies:
继续学习中。。
UML 交互概述图
LINQ 查询为最常用的操作符定义了一个声明语法。还有许多标准查询操作符
下面是 LINQ 定义的标准查询操作符。
下面开始学习这些查询
添加Using
using System.Linq; using System.Linq.Expressions;
过滤
使用 Where 子句,可以合并多个表达式。例如,找出赢得至少 15 场比赛的巴西和奥地利赛手。传送给
where 子句的表达式的结果类型应是 bool:
/// <summary> /// 过滤 /// </summary> private static void SimpleFiltering() { var racers = from r in Formula1.GetChampions() where r.Wins > 15 && (r.Country == "Brazil" || r.Country == "Austria") select r; foreach (var r in racers) { Console.WriteLine("{0:A}", r); } }
并不是所有的查询都可以用 LINQ 查询完成。也不是所有的扩展方法都映射到 LINQ 查询子句上。高级
查询需要使用扩展方法。为了更好地理解带扩展方法的复杂查询,最好看看简单的查询是如何映射的。使用扩
展方法 Where()和 Select(),会生成与前面 LINQ 查询一样的结果:
/// <summary> /// 过滤,带扩展方法的复杂查询 /// </summary> private static void SimpleFiltering() { //var racers = from r in Formula1.GetChampions() // where r.Wins > 15 && (r.Country == "Brazil" || r.Country == "Austria") // select r; var racers2 = Formula1.GetChampions(). Where(r => r.Wins > 15 && (r.Country == "Brazil" || r.Country == "Austria")). //先计算右侧括号里面的谓词结果,做参数再计算 Select(r => r); //谓词条件是r,也就是没有条件只传一个参数 foreach (var r in racers2) { Console.WriteLine("{0:A}", r); } }
用索引来过滤
不能使用 LINQ 查询的一个例子是 Where()方法的重载。在 Where()方法的重载中,可以传送第二个参数—个索引。
索引是过滤器返回的每个结果的计数器(这里用index1这个变量来存放)。可以在表达式中使用这个索引(之后可以使用这个变量)
,执行基于索引的计算。下面的代码由 Where()扩展方法调用,它使用索引返回姓氏以 A 开头、索引为偶数的赛手:
private static void SimpleFilteringWithIndex() { var racers = Formula1.GetChampions().Where((r, index1) => r.LastName.StartsWith("A") && index1 % 2 != 0); //index1 从0开始计数, 在重载的方法第二个参数为其赋值 foreach (var r in racers) { Console.WriteLine("{0:A}", r); } }
类型过滤
为了进行基于类型的过滤, 可以使用OfType()扩展方法。 这里数组数据包含string 和int对象。 使用OfType()
扩展方法,把 string 类传送给泛型参数,就从集合中返回字符串:
private static void TypeFiltering() { object[] data = { "one", 2, 3, "four", "five", 6 }; var query = data.OfType<string>(); foreach (var s in query) { Console.WriteLine(s); } }
模糊过滤
相当于SQL语句中的Like where r.Name.Contains(queryPara)
protected void btnSelect_Click(object sender, EventArgs e) { string queryPara = txtName.Text; List<MyData> query = cacheManager.GetData(KEYNAME) as List<MyData>; if (null == query) { //条件调用数据库 query = new List<MyData> { new MyData(){ Age=1, Color="New Yellow", Name="New China"}, new MyData{ Age=2,Color="New Black",Name="New USA"} }; Response.Write("读取数据库<br />"); //缓存 cacheManager.Add(KEYNAME, query); } else { List<MyData> filter = (from r in query where r.Name.Contains(queryPara) select r).ToList(); //如果这里从缓存中查出来的数据不为空但是却不正确(数量少,更新,添加) if (filter.Count == 0) { //如果结果等于空一定是查数据库 List<MyData> addQuery = new List<MyData> { new MyData(){ Age=1000, Color="New Green", Name=queryPara}, }; Response.Write("读取数据库<br />"); query.AddRange(addQuery); //缓存 cacheManager.Add(KEYNAME, query); query = addQuery; } else //筛选到结果则为结果 { query = filter; } } foreach (MyData q in query) { Response.Write(q.Name + "<br />"); } }
发表评论
-
LINQ to SQL语句之Insert/Update/Delete操作
2009-12-30 14:54 1145Insert/Update/Delete操作 插入(Ins ... -
RabbitMQ 安装配置和简单实例
2010-01-21 16:52 1874安装ErLang运行环境 配置运行环境变量 启动服务 ... -
MSMQ(Microsoft Message Queue,微软消息队列) Asp.Net 简单示例
2010-01-22 14:59 3289系统: Windows XP 1.安装MSMQ 控制面板—&g ... -
IromPython .Net 的简介和第一个例子
2010-01-23 18:53 1365.Net 4 都已经到来 ... -
Microsoft Asp.Net MVC 从入门到精通
2010-01-27 17:53 866ASP.NET MVC Framework是微软官方提供的MV ... -
C# Socket 同步通信与异步通信 示例
2010-01-30 17:50 4759同步 1.建立链接发送和获取信息 异步 1.服务器端建立一 ... -
解决 Visual Stuido 工具栏中的工具重置后,恢复回来。
2009-12-18 17:06 1296拿DevExpress 控件为例,如果重置工具栏后,以前的工具 ... -
LINQ to SQL 用O/R设计器手工建表对象
2009-10-11 22:04 1060除了自己建立定制对象外,还可以使用O/R设计器以可视化的方式创 ... -
LINQ to XML .Net 3.5 中的新XML对象
2009-10-15 14:11 914System.Xml.Linq 命名空间中,有一系列新的LIN ... -
LINQ to XML 用 LINQ 查询 XML
2009-10-15 15:57 690将一个已知的XML放到XDocument 对象当中使用LINQ ... -
LINQ to XML 操作XML文档
2009-10-15 17:18 1013使用 XDocument 对象的 Element 方法,获取制 ... -
C# 编码规范
2009-10-15 19:20 749陈年的文档,不过很不错整理出来发到博客上,还有更多的朋友需要。 ... -
Visual Studio 项目模板、文件模板、代码段和环境设置
2009-10-15 19:31 964很久前使用过,那个时候还没有开始写博客,好久不用就都忘记了,这 ... -
ADO.NET Entity Framework 概述
2009-10-16 11:50 593ADO.NET Entity Framework 与 LINQ ... -
LinqPad 1.31 下载
2009-01-14 15:42 1000LinqPad 1.31 也许你已经非常熟悉他了,为即将使用L ... -
jQuery 的第一个例子
2009-01-18 10:34 825通过这个例子可以对jQuery的使用有个基本的认识,jQ ... -
jQuery 选择器的使用
2009-01-18 10:39 868jQuery 能如此的流行,很重要的一点也许就是他有非常强大且 ... -
一次从GridView 获得多个指定行中多个指定控件的值
2009-01-20 07:33 894一次从GridView 获得多个指定行中多个指定控件的值,非常 ... -
jQuery 的Ajax应用(1)--学习篇,内附实例
2009-01-28 21:48 1353下面以前台jQuery,后天C# 的方式,演示了,如何通过 ... -
Enterprise Library 4.1 一步一步从入门到精通(未完成)
2009-02-05 23:04 910Enterprise Library 4.1 一步一步从入门到 ...
相关推荐
LINQ的核心是它的标准查询操作符库,这些操作符提供了丰富的功能,可以对序列执行各种操作,如过滤、投影、聚合、连接和排序。 **1. LINQ提供程序** - **LINQ to Objects**:用于查询内存中的对象集合,如数组和...
### LINQ标准查询操作符详解 #### 一、投影操作符 **1. Select** - **定义**: `Select`操作符用于对集合中的每个元素应用指定的函数,并将结果返回为一个新的序列。此操作通常用来从原始数据集中提取特定属性或...
### LINQ标准查询操作符详解 #### 一、投影操作符 **1. Select** `Select` 操作符用于从源序列中选择一系列值,并将其转换为新的序列。这种转换通常涉及从源序列中的每个元素生成一个新元素。在 LINQ 查询中,`...
### LINQ标准查询操作符详解 #### 一、投影操作符 **1. Select** `Select` 是一种常用的投影操作符,它允许我们基于输入序列中的每个元素创建一个新序列。这种操作通常用来改变序列中元素的数据类型或者提取特定...
### Linq操作符27个常用说明 #### 1. Where 操作符 - **功能描述**:`Where` 操作符用于筛选出输入集合中符合特定条件的元素,并将其组织成一个新的序列。 - **应用场景**:当你需要从现有集合中筛选出一部分满足...
例如,`Select`操作符用于投影每个源元素到新形式,而`Cast`和`OfType`则用于将对象转换为特定的类型。`SelectMany`则用于将一个集合的元素扩展为多个集合,并将它们组合成一个单一的查询结果。 2. **其他操作符**...
- **转换操作符**:如`Cast()`和`OfType()`用于将元素转换为特定类型。 - **元素操作符**:如`First()`、`Last()`和`Single()`用于获取序列的第一个、最后一个或唯一的元素。 - **生成操作符**:如`Range()`和`...
8. **LINQ - Conversion Operators**:包括`Cast`和`OfType`等转换操作符,用于将一个类型转换为另一个类型,以便进行查询。 9. **LINQ - Set Operators**:可能涵盖了`Distinct`、`Except`、`Intersect`、`Union`...
- **筛选数据**: `Where`用于根据条件过滤元素,`OfType`用于仅保留指定类型的元素。 - **投影运算**: `Select`用于改变每个元素的形式,`SelectMany`用于组合多个集合。 - **排序**: `OrderBy`和`ThenBy`用于对数据...
4. **创建自定义操作符**:如果标准操作符无法满足需求,可以创建自定义操作符。 5. **利用 Rx 库中的现有操作符**:在大多数情况下,Rx 提供的操作符已经足够使用。 #### 四、总结 Reactive Framework 是一个强大...
为了转换和减少序列,Rx提供了各种操作符,例如Where用于过滤,Skip和Take用于选择序列的一部分,以及First和Last等聚合函数。Aggregation操作符允许计算序列的统计信息,如Count、Min、Max、Sum和Average。 Rx还...
- `Array.IndexOf(T[] array, T value)`:查找元素在数组中的索引位置。 3. **集合操作**: - `List<T>`:动态大小的列表,支持添加、删除、查找等操作。 - `HashSet<T>`:无序且不重复的元素集合。 - `...