随笔分类 - [8]Linq
摘要:LINQ有很多值得学习的地方,这里我们主要介绍LINQ to SQL Table,包括介绍LINQ的核心概念等方面。近日开始写有关于LINQ的文章,正巧写到Linq To SQL,由于探索LINQ的核心概念所致,脑中突现一个想法,"我是否可以将LINQ to SQL Table与LINQ to XML的XElement join起来?"理论上,在LINQ的设计概念中,这是可行的. 1 static void TestCrossLinq() 2 { 3 NORTHWND db = new NORTHWND("Data Source=.\\SQLEXPRESS; 4
阅读全文
摘要:本文向大家介绍Linq Library,可能好多人还不了解Linq Library,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。PDC 05上揭露了C# 3.0及Linq Project,什么是Linq呢?简单的说,Linq是一个语言层级的查询语法Library,她可以让我们以类SQL语法的方式来查询语言中的变数,例如阵列,Collections.以实例来说: 1 static void ObjectQuery() 2 { 3 var people = new List () 4 { 5 new Person { Age=12, Name="Bob" },
阅读全文
摘要:在向大家详细介绍LINQ to SQL语句之前,首先让大家了解下Select操作形式,分别为指定类型形式、过滤类型形式、shaped类型形式。这篇开始我们继续说LINQ to SQL语句,目的让大家从语句的角度了解LINQ,LINQ包括LINQ to Objects、LINQ to DataSets、LINQ to SQL、LINQ to Entities、LINQ to XML,但是相对来说LINQ to SQL在我们程序中使用最多,毕竟所有的数据都要在数据库运行着各种操作。所以先来学习LINQ to SQL语句,其它的都差不多了,那么就从Select说起吧,这个在编写程序中也最为常用。本篇
阅读全文
摘要:在向大家详细介绍LINQ to SQL语句之前,首先让大家了解下Select操作形式,分别为简单形式、匿名类型形式、带条件形式。这篇开始我们继续说LINQ to SQL语句,目的让大家从语句的角度了解LINQ,LINQ包括LINQ to Objects、LINQ to DataSets、LINQ to SQL、LINQ to Entities、LINQ to XML,但是相对来说LINQ to SQL在我们程序中使用最多,毕竟所有的数据都要在数据库运行着各种操作。所以先来学习LINQ to SQL语句,其它的都差不多了,那么就从Select说起吧,这个在编写程序中也最为常用。本篇详细说明一下S
阅读全文
摘要:本文向大家介绍Ling to sql更新实体,可能好多人还不了解Ling to sql更新实体,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。Ling to sql更新实体非常费劲!一般网上的例子中都是一下这样的。1 Customer cust = db.Customers.First(c => c.CustomerID == "ALFKI");2 cust.ContactTitle = "Vice President";3 db.SubmitChanges();但是,貌似在分层系统中,数据库操作会写到数据访问层,定义实体,抽象出接
阅读全文
摘要:在向大家详细介绍LINQ to SQL实体类之前,首先让大家了解下关联的属性说明,然后全面介绍LINQ to SQL实体类之间的关联。LINQ to SQL实体类之间的关联类似于数据库中表之间的关系。可以使用“关联编辑器” 对话框创建实体类之间的关联。使用“关联编辑器” 对话框创建关联时,必须选择父类和子类。父类是包含主键的实体类;子类是包含外键的实体类。例如,如果创建映射到 Northwind Customers 和 Orders 表的实体类,则 Customer 类将是父类,而 Order 类将是子类。将表从“服务器资源管理器” /“数据库资源管理器” 拖动到对象关系设计器(O/R 设计器
阅读全文
摘要:学习Linq时,经常会遇到Linq语句问题,这里将介绍Linq语句问题的解决方法。Navigation 类提供取得指定 Url 权限的功能,使用基本的Linq语句:public static int GetPermission(string Url){var item = Links.Where(p => p.Url == Url).ToList();if (item.Count > 0){return item[0].Permission;}return 0;}因为,在生成 html 的时候,考虑了如果按照相应的权限,一个分类下没有任何项目,则不显示这个分类,所以,取 Index
阅读全文
摘要:Linq有很多值得学习的地方,这里我们主要介绍Linq lambda表达式,包括介绍Expression tree等方面。Linq lambda表达式了解过C# 3.0的新特性的话应该知道,在C# 3.0中新引入了一个语法结构,称为lambda expression(Linq lambda表达式/匿名函数)。对此尚不了解的也可以到MSDN上看看,Linq lambda表达式。Linq lambda表达式既可以赋值给一个委托(delegate)类型,例如Action、Func等系列的内建委托类型;也可以赋值给Expression类型,例如以下Linq lambda表达式:x => -x当它
阅读全文
摘要:在向大家详细介绍创建LINQ Expression tree节点之前,首先让大家了解下节点该如何创建,然后全面介绍。创建LINQ Expression tree节点当了解LINQ Expression tree的概念后,就可以来讨论一下这棵树里面的节点该如何创建。LINQ Expression tree节点一般是通过System.Linq.Expression.Expression这个类上的工厂方法来创建的。包括以下的一些方法:Add : BinaryExpressionAddChecked : BinaryExpressionAnd : BinaryExpressionAndAlso : B
阅读全文
摘要:本文向大家介绍LINQ Expression tree,可能好多人还不了解LINQ Expression tree,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。LINQ Expression tree一棵LINQ Expession tree在创建后就不可再改变。假如某个程序接收一棵Expression tree为参数,然后仅仅是用于生成别的形式的代码(例如SQL语句),那么这个不可改变性不会有什么影响。但如果一个程序想对一棵Expression tree进行修改该怎么办呢?解决方法是从来源的Expression tree复制出一棵新的树,在复制过程中根据自己的需要选择是直接
阅读全文
摘要:学习LINQ时,经常会遇到LINQ查询语法问题,这里将介绍LINQ查询语法问题的解决方法。LINQ查询语法首先来看一个很简单的LINQ查询例子,查询一个int 数组中小于5的数字,并按照大小顺序排列:class Program{static void Main(string[] args){int[] arr = new int[] { 8, 5, 89, 3, 56, 4, 1, 58 };var m = from n in arr where n < 5 orderby n select n;foreach (var n in m){Console.WriteLine(n);}Con
阅读全文
摘要:Linq有很多值得学习的地方,这里我们主要介绍Linq调用数据访问服务,包括介绍Admin.cs代码修改成等方面。Linq调用数据访问服务Linq调用数据访问服务来进行留言、回复、删除留言等操作了。页面的代码不再贴了,我们把Default.cs修改成如下:public partial class _Default : System.Web.UI.Pag{protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){SetBind();}}protected void btn_SendMessage_Click(obj
阅读全文
摘要:在向大家详细介绍Linq使用sqlmetal之前,首先让大家了解下外部映射文件,然后全面介绍Linq使用sqlmetal。外部映射文件我们可以Linq使用sqlmetal命令行工具来生成外部映射文件,使用方法如下:1、开始菜单 -》 VS2008 -》VS工具 -》VS2008命令行提示2、输入命令:D:\Program Files\Microsoft Visual Studio 9.0\VC>sqlmetal /conn:server=xxx; database=Northwind;uid=xxx;pwd=xxx /map:c:\northwind.map /code:c:\north
阅读全文
摘要:本文向大家介绍Linq实体关系,可能好多人还不了解Linq实体关系,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。Linq实体关系的定义比如我们的论坛分类表和论坛版块表之间就有关系,这种关系是1对多的关系。也就是说一个论坛分类可能有多个论坛版块,这是很常见的。定义Linq实体关系的优势在于,我们无须显式作连接操作就能处理关系表的条件。首先来看看分类表的定义:[Table(Name = "Categories")]public class BoardCategory{[Column(Name = "CategoryID", DbType =
阅读全文
摘要:在向大家详细介绍Linq实体继承使用之前,首先让大家了解下Linq to sql是否能根据TopicType识别派生类,然后全面介绍Linq实体继承使用。Linq实体继承使用定义好实体继承之后,我们就可以Linq实体继承使用了。先是自定义一个DataContext吧:public partial class BBSContext : DataContext{public Table<BoardCategory> BoardCategories;public Table<Board> Boards;public Table<Topic> Topics;publ
阅读全文
摘要:Linq有很多值得学习的地方,这里我们主要介绍Linq实体继承的定义,包括介绍Linq to sql支持实体的单表继承等方面。Linq实体继承的定义Linq to sql支持实体的单表继承,也就是基类和派生类都存储在一个表中。对于论坛来说,帖子有两种,一种是主题贴,一种是回复帖。那么,我们就先定义帖子基类:[Table(Name = "Topics")]public class Topic{[Column(Name = "TopicID", DbType = "int identity", IsPrimaryKey = true, I
阅读全文
摘要:本文向大家介绍Linq DataContext,可能好多人还不了解Linq DataContext,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。主键缓存Linq to sql对查询过的对象进行缓存,之后的如果只根据主键查询一条记录的话会直接从缓存中读取。比如下面的代码:Customer c1 = ctx.Customers.Single(customer => customer.CustomerID == "ANATR");c1.ContactName = "zhuye";Customer c2 = ctx.Customers.S
阅读全文
摘要:Linq DataLoadOptions限制Linq to sql对Linq DataLoadOptions的使用是有限制的,它只支持1个1对多的关系。一个顾客可能有多个订单,一个订单可能有多个详细订单:DataLoadOptions options = new DataLoadOptions();options.LoadWith<Customer>(c => c.Orders);options.LoadWith<Order>(o => o.Order_Details);ctx.LoadOptions = options;IEnumerable<Cus
阅读全文
摘要:学习Linq to object时,经常会遇到Linq to object问题,这里将介绍XX问题的解决方法。普通存储过程,首先在查询分析器运行下面的代码来创建一个存储过程:create proc sp_singleresultsetasset nocount onselect * from customers 然后打开IDE的服务器资源管理器,之前我们从表中拖动表到dbml设计视图,这次我们从存储过程中找到刚才创建的存储过程,然后拖动到设计视图。在方法面板中可以看到已经创建了一个sp_singleresultset的方法然后打开Northwind.designer.cs,可以找到下面的代码.
阅读全文