Edi Wang

Azure Developer, Microsoft MVP

All Posts


LINQ to List泛型的几种简单查询

最近比较喜欢LINQ,真是碉堡了。下面写了个例子演示一下LINQ对List<T>的操作,包括排序、where条件、选部分数据等查询。最近偷懒,不写注释了,大家自己看一下就明白了~ 测试用的BLL和Model public class TestBLL { public List<TestModel> GetList() { return new List<TestModel>() { new TestModel(){ Id=1, Name="RYWE", Content="IOJADJ", Posttime=DateTime.Now.AddHours(1) }, new TestModel(){ Id=2, Name="JGFA", …

LINQ List Generics

TinyMCE syntaxhl插入代码后换行的修改

上次搞了个整合insert code的TinyMCE编辑器,非常好用。但有一个缺点:每次插入代码后,光标都会停留在pre标记里面,打回车出不来,必须编辑HTML,在pre后面加个换行,然后才能回到可视化界面里继续编辑博客。如果博客里要插入的代码片段很多,就会非常不爽。所以今天给它做了个小修改。 打开plugins\syntaxhl\js\dialog.js 定位到41行,找到</pre>标记。这是预格式化标签的结尾标记。所以只要在它后面插入一个段落标记,即可让光标跳出我们插入的代码片段。插件的作者在41行后加了个bug注释,所以不敢贸然写在</pre>的后面,所以我们换一行,把<p></p>拼接上。 现在我们插入代码后,光标就不会卡在pre里面了~OH YEAH! 有图有真相:

TinyMCE

C#数据结构之顺序栈

继续发很久以前的那个系列。。。今天是顺序栈。。 接口如下: public interface IStack<T> { void Clear(); void Push(T item); T Pop(); T GetTop(); } SqStack类: public class SqStack<T> : IStack<T> { private int _Maxsize; private T[] _Data; private int _Top; public T this[int index] { get { return _Data[index]; } …

C# Stack Data Structure

LINQ to XML CRUD,并且封装为DAL方法

LINQ非常牛逼,操作数据库和集合对象非常方便,已经得到了非常广泛的应用。好处我不多说了。今天来给大家看看LINQ对XML的增删改查操作,并且封装为DAL类,方便在多层结构的应用程序中使用。以我网站的友情链接模块为例: XML文件的结构如下: 1 XNA Develop http://www.xnadevelop.com/ 1 2 BlogNT 开源.NET博客 http://www.blognt.com/ 2  和以往写ORM一样,我们首先要把对数据的描述抽象为model: public sealed class FriendLink { private int _id; private string _title; …

CRUD DAL LINQ XML

几种常用的代码重构手法

最近看了Martin Fowler的著作《Refactoring: Improving the Design of Existing Code》收获颇大。书上的例子都是Java写的,其实我们同样可以运用在其他语言中,现在做.NET开发的话,用的最多的就是Visual Studio,它自带的重构功能可以很方便的整理代码。 重构的好处不多叙述了,大家都明白。书上论述的非常详细,我挑选几种最常用的重构方法,并用C#语言做示例,帮助大家了解必要的重构手法。另外,我也会附上一些自己平时在编程中常用的重构片段,但未必是100%正确或最好的。 1.Extract Method (提取函数) 样例代码: public void PrintOwing(double amount) { PrintBanner(); // print details Console.WriteLine(" …

C# Coding Refactor

ASP.NET List泛型分页代码

2011.11.13修正: 1. 改正页数计算方法,以前的计算公式遇到整除就会多一页 2. 重发关键代码,以前因为编辑器的原因,部分代码会被过滤 3. 新增“转到[]页”功能 我们以前做ASP.NET网站,通常是把DataSet绑定到显示控件上,再用各种手段进行分页,比如PagedDataSource。然而,如果你是从业务层取数据,通常是一个List,这个时候就不能用以往的方法分页了。 一种办法是用ObjectDataSource,绑定GridView、ListView就可以分页,但如果遇到DataList或Repeater,就得自己写分页了。下面是我昨天写的List泛型分页Demo,有图有真相: 下面发代码: List泛型分页通用类: /// /// 泛型分页类 /// /// 类型 public class ListPager : …

ASP.NET List Generics

C#数据结构之顺序表SqList

最近在公司On Bench比较蛋疼,正好手头有本《C#数据结构》,拿来复习一下数据结构。以前大学里都是用C语言写的,C#从来没试过,毕竟C#本身就带有很多数据结构的Class可以直接拿来用。出于实验性目的,我还是看着书用C#写了几个demo。书上有些错误我也一并修正了。接下来发的代码都是经过测试可以正常运行的~DAY1.顺序表最近博客系统有点BUG,代码中如果有三条杠注释就会排版混乱,所以抱歉这次不能带注释了。IListDs接口:public interface IListDs {     void Clear();     void Append(T item);     void Insert(T item, int i);     T Delete(int i);     T GetElement(int i);     int Locate(T value); } …

C# Data Structure

ASP.NET中URL重写和Session冲突的问题

今天在改博客系统的一个Bug的时候,程序里用了Session,结果一跑就报错:只有在配置文件或 Page 指令中将 enableSessionState 设置为 true  时,才能使用会话状态。还请确保在应用程序配置的  \\ 节中包括  System.Web.SessionStateMod 或自定义会话状态模块。然而用VS自带的Web Server调试一点问题都没有。唯独在IIS下跑的时候老报错,错误语句就是那行用了Session的程序。唯一的区别就是VS下调试时,URL没有重写。于是我回到IIS上,用完整的URL试了下,果然木有问题。我所使用的是URLRewriter.dll,似乎是当年微软提供的,经过一番查找,似乎有很多人和我有同样的问题,不管他们用的是不是URLRewriter.dll。奇怪的是,并不是每个版本的IIS都会丢Session。我本机和网站服务器用的是IIS7, …

ASP.NET Session URL Rewrite

ASP.NET用控件连接Access2010数据库报错的解决方法

今天想把网站的数据库换成2010(.accdb)格式的,但不知道主机服务商是否支持。于是想做个页面先测试一下。为了图方便,我用Access2010建立好测试用的数据库后,在VS里用拖DataSource控件的方法建了一个测试页面。VS里一切正常,可以识别数据库的内容。但网页一运行就报错:OleDbException (0x80004005): 不可识别的数据库格式。但通过编程的方式来指定provider就行。 经过一番研究发现,Access 2007或2010已经不能用AccessDataSource控件来连接了。必须使用SqlDataSource,但有些地方要做些改动: 1. 拖个SqlDataSource进来,然后选择配置数据源: 2.点击[新建连接]后,选择你的accdb数据库,数据源应该会自动适配为OLE DB。 3 …

ASP.NET

数组删除重复元素,List<T>实现

这是个很老很无趣的话题,常见于C语言的作业题。其实严格意义上来说,用List泛型属于作弊了~,但过程非常简单,没有技术含量,主要是让大家看看C#的优雅。我们知道,以前在C语言中要删除数组里的重复元素非常麻烦,要有两个游标(这意味着至少2层for嵌套),还要关心元素移位的问题。现在,如果把数组这样可以看作集合的东西放到集合类型里,比如List泛型,事情就会容易的多:static void Main(string[] args) {     List strs = new List() { "a", "b", "c", "c", "d", "c", "a", "e", "f", "b", "g", "h" };     // 不能用foreach,因为迭代器是只读的     for (int i = 0; i 有图有真相:

C# Generics Array