怎样快速开发出LINQ数据信息筛选
我们开始。如图1,我们从工具箱托拽一个DropDownList到default.aspx。
因为是从中途入手,而且之前没有写一行代码,这里我们要增加几行C#代码通过LINQ查询向DropDownList提取数据。同样,如果您刚接触LINQ,我还是建议您访问ScottGu的博客。
图2是在Page_Load事件中用于向DropDownList提取数据的代码:
步骤1、2就表明在完成Page_Load事件。重要的内容从步骤3开始 。
CustomerDataContext context = new CustomerDataContext()
什么是CustomerDataContext? 他原来是什么?诚然,这会令很多刚解决LINQ的人很困惑。因此,我们集中揭秘它。还记得在第一部分我们增加了一个如图3的LINQ to SQL文件——Customer.dbml。
当我们托拽Customer表到Customer.dbml时,ASP.NET为我们生成了一些代码,虽然第一部分我们忽略掉,但不能总是不关注。双击Customer.dbml,然后在VS IDE中打开的Customer.dbml中选择View Code观察具体细节,如图4:
请注意分部类型CustomerDataContext,他是LINQ王国的关键所在。如果您退回到图2步骤3,我们在那就引用到它。这就是我们到IC报价网数据库的连接,因此托拽到Customer.dbml的表、存储过程IC报价网、函数都会经由它。它对于写LINQ查询很重要,可以从MSDN中用“DataContent”类找到相关细节。通过intellisence我们可以浏览到如图7中DataContext可能关系到的内容:
这个查询语法有悖于任何熟悉T-SQL人员的直观感觉IC报价网——先FROM子句再是SELECT.我猜这是初入LINQ领域人员遇到的最大障碍。但这有缘由,我会把这个讨论流到以后某些时候。能编译通过就说明那个LINQ语法是对的。
我们从Customer表返回的是一组Cutomer类型集合,就像用T_SQL写“SELECT Customer_TYPE FROM Customer”一样。
从T-SQL语句您会发现我们是要返回所有Customer类型,不过有点瑕疵——会返回重复的记录。没错,我们实际需要的是“select distinct customer_type from customer”,这样问题就是怎么做到?我猜我们大部分人用T-SQL会比用LINQ语法快得多的写出来。因此,我也会这么建议,不过遗憾的是我不清楚是否会有把T-SQL转换为LINQ的工具,有的话别忘了知会我。