1.4.1.1 用 LINQ 处理数据

如果你已经在使用 LINQ,那么这个示例只是提醒,但我们会用它来展示一些更重要的内容。这里示例代码处理数据,使用的是标准的命令式编程风格。

Listing 1.3 Imperative data processing (C#)

IEnumerable<string>GetExpenisveProducts() {

List<string> filteredInfos =
newList<string>();     [1]

foreach(Product product
inProducts) {                [2]

if(product.UnitPrice > 75.0M) {

filteredInfos.Add(String.Format("{0} -${1}",

product.ProductName, product.UnitPrice)); [3]

}

}

return filteredInfos;

}

正如你所看到的,代码就是基本的命令序列,是命令式的。第一句创建新的列表[1],第二句遍历所有的产品[2],后面的语句将遍历到的元素添加到列表中[3]。但是,我们希望能够在更高层次上描述这个问题,使用更抽象的术语,即,这段代码筛选一个集合,返回所有符合条件产品的有关信息。

在 C# 3.0 中,写同样的代码,我们可以使用查询表达式。在清单 1.4 中的这个版本,更贴近我们的真正目标,使用同的思想,筛选和转换数据。

Listing 1.4 Declarative data processing(C#)

IEnumerable<string>GetExpenisveProducts() {

return from product
inProducts

where product.UnitPrice > 75.0M             [1]

selectString.Format("{0} - ${1}",

product.ProductName, product.UnitPrice); [2]

}

计算结果(filteredInfos [可能是笔误,代码中并无这个变量。应该是筛选后的信息。])的表达式是由基本运算符,例如 select 或 where 所组成。这些运算符把其他表达式作为参数,因为它们需要知道筛选、选择什么作为结果。与前面的代码相比,这些运算符使用全新方法组合代码,同样表达我们的意图,但写的代码更少。注意,在清单 1.4 中的整个计算一个描述结果的表达式,而不是语句序列。你将在整本书反复看到这一趋势,在更具声明性的语言,如 F# 中,所写的一切都是表达式。

这个清单中的另一个有意义的地方是,解决方案的许多技术细节都转到了基本运算符中了。这样,代码更简单,更灵活,因为我们可以只需要改变运算符的实现,而不用对使用运算符的代码做大的修改。稍后将会看到,这种方式使得并行处理数据的代码更容易。

LINQ 并不是唯一依赖声明式编程的主流 .NET 技术,下面,我们把注意力转到 Windows 表现层基础(Windows Presentation Foundation,WPF)和XAML 语言上来。

1.4.1.1 用 LINQ 处理数据

时间: 2024-10-27 16:41:00

1.4.1.1 用 LINQ 处理数据的相关文章

[MVC4]ASP.NET MVC4+EF5(Lambda/Linq)读取数据

继续上一节初始ASP.NET MVC4,继续深入学习,感受了一下微软的MVC4+EF5(EntityFramework5)框架的强大,能够高效的开发出网站应用开发系统,下面就看一下如何用MVC4+EF5来实现数据的读取. 实现效果 操作步骤 1.创建数据库 --创建表格-- Create table News ( id int identity(1,1) primary key, NewsTitle varchar(100)not null, CreateTime Datetime, Conte

使用Linq 查询数据 构建对象 select new{}

linq 查询数据 /// <summary> /// 汽车品牌及车型 /// </summary> /// <returns></returns> public string GetCarBrandSeries() { var result = from a in db.CR_BC_BRAND join c in db.CR_BC_BRAND_SERIES on a.CR_BC_BRAND_ID equals c.CR_BC_BRAND_ID select

LINQ驱动数据的查询功能

一.LINQ概念 LINQ是微软在.NetFramework3.5中新加入的语言功能,在语言中以程序代码方式处理集合的能力. 1.1 LINQ VS 循环处理 在我刚工作时候,对于集合对象的处理一般是采用循环这个集合处理,在处理实值类型上这样做效率还行,但是如果集合内是引用类型,使用LINQ就方便的多,例如一个程序要计算课程的总分和平均分,实体分别是Student和StudentScore 类的申明如下: /// <summary> /// 学生实体 /// </summary>

C#小知识点记录(QQ交流群的一个小问题)Linq提取数据

请教 这里 LINQ想 找到 最后的 4条 记录 然后放在 这里这个 List Linq查找怎么写呀? 解答:写了一个小例子作为解答. 1 namespace C_Sharp 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 //声明 8 List<Person> listPerson = new List<Person>() { 9 new Person {Type="A", Fir

SharePoint 服务器端对象模型 之 使用LINQ进行数据访问操作(Part 2)

(四)使用LINQ进行列表查询 在生成实体类之后,就可以利用LINQ的强大查询能力进行SharePoint列表数据的查询了.在传统SharePoint对象模型编程中,需要首先获取网站对象,再进行其他操作:使用LINQ也是类似,对数据的访问和操作都要先获取DataContext网站,之后再通过这个DataContext进行数据访问. 1.获取网站和列表 DataContext的创建同样也是要使用绝对路径进行构造,并使用GetList方法获取相应的列表.例如下面的代码获取Chapters列表中所有的

SharePoint服务器端对象模型 之 使用LINQ进行数据访问操作(Part 3)

(五)使用LINQ进行数据更新 LINQ to SharePoint的优势不仅在于可以方便快捷地进行SharePoint列表数据查询,SPMetal所生成的数据实体类实际上是一个支持双向同步的模型,也就是意味着通过DataContext我们还可以将数据的变动提交到SharePoint列表中. 通过DataContext进行数据提交主要分成三个阶段:(1)确保DataContext支持数据提交,即其中的ObjectTrackingEnabled属性为true(默认值):(2)修改数据实体的内容:(

使用LINQ查询数据实例和理解

var contacts= from customer in db.Customers where customer.Name.StartsWith("A")&&customer.Orders.Count>0 orderby customer.Name select new {customer.Name,customer.Phone}; 模糊点理解:StartsWith: StartsWith("abbbs") 相当于 like 'a%' ||

linq 大数据 sql 查询及分页优化

前提: 需要nuget   PredicateLib   0.0.5: SqlServer  2008R2 (建议安装 64 位): .net 4.5 或以上: 当前电脑配置: I7 4核  3.6GHZ,8G 内存 (办公电脑 ,win10 64位) 描述: 在实际项目中我们会遇到多个表关联查询数据,并进行分页操作:当数据量很大的时候如(500万或以上)的时候,分页很吃力,特别还需要一些模糊查询,排序的时候会导致很慢: 本文章主要解决分页及多个数据表关系查询速度慢的问题: 解决办法及优化过程:

asp.net LINQ实现数据分页

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Configuration; public partial class _Default : System.Web.UI.Page { LinqDBDataContext lqDB = new L