摘要: asp.net网站经常会遇到升级或者修改url参数导致继续使用旧的页面地址会发生错误,这种网站404错误很多人只是在web.config里定义错误转向页或者在Global.asax里捕捉错误之后跳转到错误提示页上。这样简单处理对搜索引擎并不友好,因为asp.net返回的状态不是404而是302跳转,会给搜索引擎误导导致搜索还保留无效的页面地址。正确的设置自定义404错误页面应该返回“404”错误代码并显示错误提示信息,而不是 “200”或“302”状态。 普遍使用web.config中customErrors配置节asp.net会在返回的head头上加上302状态,即使你在自定义 的404输. 阅读全文
posted @ 2011-07-29 12:34 左轮death029 阅读(3652) 评论(7) 推荐(1) 编辑
摘要: FileStream对象表示在磁盘或网络路径上指向文件的流。这个类提供了在文件中读写字节的方法,但经常使用StreamReader或StreamWriter执行这些功能。这是因为FileStream类操作的是字节和字节数组,而Stream类操作的是字符数据。字符数据易于使用,但是有些操作,比如随机文件访问(访问文件中间某点的数据),就必须由FileStream对象执行,稍后对此进行介绍。还有几种方法可以创建FileStream对象。构造函数具有许多不同的重载版本,最简单的构造函数仅仅带有两个参数,即文件名和FileMode枚举值。FileStream aFile = new FileStrea 阅读全文
posted @ 2011-07-28 17:50 左轮death029 阅读(6132) 评论(0) 推荐(0) 编辑
摘要: 描述:根据顾客的国家分组,查询顾客数大于5的国家名和顾客数查询句法:var 一般分组 = from c in ctx.Customersgroup c by c.Country into gwhere g.Count() > 5orderby g.Count() descendingselect new{国家 = g.Key,顾客数 = g.Count()};对应SQL:SELECT [t1].[Country], [t1].[value3] AS [顾客数]FROM (SELECT COUNT(*) AS [value], COUNT(*) AS [value2], COUNT(*) 阅读全文
posted @ 2011-07-23 15:22 左轮death029 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 学习Linq时,经常会遇到Linq使用Group By问题,这里将介绍Linq使用Group By问题的解决方法。1.计数varq= frompindb.Products grouppbyp.CategoryIDintog selectnew{ g.Key, NumProducts=g.Count() };语句描述:Linq使用Group By和Count得到每个CategoryID中产品的数量。说明:先按CategoryID归类,取出CategoryID值和各个分类产品的数量。2.带条件计数varq= frompindb.Products grouppbyp.CategoryIDintog 阅读全文
posted @ 2011-07-23 15:21 左轮death029 阅读(381) 评论(0) 推荐(0) 编辑
摘要: 1.简单形式:var q = from p in db.Products group p by p.CategoryID into g select g; 语句描述:Linq使用Group By按CategoryID划分产品。说明:from p in db.Products 表示从表中将产品对象取出来。group p by p.CategoryID into g表示对p按CategoryID字段归类。其结果命名为g,一旦重新命名,p的作用域就结束了,所以,最后select时,只能select g。2.最大值var q = from p in db.Products group p by p.C 阅读全文
posted @ 2011-07-23 15:20 左轮death029 阅读(519) 评论(0) 推荐(0) 编辑
摘要: 之前写过一篇关于C#委托与事件的文章(见《C#委托和事件例析》),不过还是收到一些网友的提问。所以,今天再换另一个角度来详解一下这个问题。一、在控制台下使用委托和事件我们都知道,C#中有“接口”这个概念,所谓的“接口”就是定义一套标准,然后由实现类来具体实现其中的方法,所以说“接口,是一组类的抽象”。同样道理,我们可以将“委托”理解为“方法的抽象”,也就是说定义一个方法的模板,至于这个方法具体是怎么样的,就由方法自己去实现。我们知道接口的最大好处就是可以实现多态,同理,“委托”是可以实现方法的多态,当我们想调用某个具体方法的时候,我们不直接调用这个方法,而是去调用这个委托。当然,我们必须在具体 阅读全文
posted @ 2011-07-23 15:06 左轮death029 阅读(676) 评论(1) 推荐(1) 编辑
摘要: 在学习 Design&Pattern 的 Singleton Pattern 的时候,因为静态初始化是在 .NET 中实现 Singleton 的首选方法. 1 public sealed class Singleton 2 { 3 static readonly Singleton instance = new Singleton(); 4 5 static Singleton() 6 { 7 } 8 9 Singleton()10 {11 }12 13 public static Singleton Instance14 {15 get16 {17 return instance; 阅读全文
posted @ 2011-07-23 14:40 左轮death029 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 之前的文章中,我们曾介绍过C#的历史及C#4.0新增特性,包括:dynamic、 命名和可选参数、 动态导入以及协变和逆变等。今天我们结合代码实例来具体看一下C#4.0中的四个比较重要的特性。 1.dynamic ExpandoObject 熟悉js的朋友都知道js可以这么写 : var t = new Object(); t.Abc = ‘something’; t.Value = 243; 现在这个js动态语言的特性,我们也可以在c#中使用了,前提是将一个变量声明为ExpandoObject类型。如下例: static void Main(string[] args) { dynamic 阅读全文
posted @ 2011-07-23 12:15 左轮death029 阅读(491) 评论(1) 推荐(0) 编辑
摘要: 5.2LINQ to DataSet实现复杂数据查询LINQ to DataSet将LINQ和ADO.NET集成,它通过ADO.NET获取数据,然后通过LINQ进行数据查询,从而实现对数据集进行非常复杂查询。本节将介绍如何使用LINQ to DataSet操作数据集DataSet中的数据。5.2.1使用LINQ to DataSetLINQ to DataSet可以简单理解成通过LINQ对DataSet中保存的数据进行查询,它和第7章介绍的LINQ查询并没有太大的区别。LINQ to DataSet的使用通常包含以下步骤:(1)获取DataSet/DataTable数据源。LINQ to Da 阅读全文
posted @ 2011-07-23 11:54 左轮death029 阅读(560) 评论(1) 推荐(0) 编辑
摘要: 通常,一个数据集(DataSet)包含多个数据表(DataTable),而且数据表之间具有一定的关联关系,从而表示一个关系型数据库。通过LINQ to DataSet同样可以轻松查询多个数据表中的数据,这通常需要使用多个from子句进行复合查询,同时通过where子句来进行多个表之间的关系判断。本节的例子中,使用示例代码5-3中创建的数据集合,BuildDataSet()方法创建一个名为Students的数据表,包含两个数据表Students和Scores,前者记录学生信息,包括:姓名(Name)、性别(XingBie)、年龄(Age)、成绩号(ScoreID)。后者记录学生成绩,包括:成绩号 阅读全文
posted @ 2011-07-23 11:12 左轮death029 阅读(573) 评论(1) 推荐(0) 编辑