今天的两个.net 2.0的小发现

使用2.0,就要使用2.0的新功能啊。下面记录两个今天的小发现
1.从字符转换成数字的最佳办法
1.1的时候,如果要从字符转换成数字,都会碰到一个如果字符不是规则数字怎么办?以前最好的办法是用正则验证。现在……最好也是用正则验证(汗……),但是在程序转换方面,有了比 Int32.Parse (String)更好的Int32.TryParse (String, Int32)。下面是sdk文档对这个的一些说明

public static bool TryParse (
 string s,
 out int result
)
参数
s
包含要转换的数字的字符串。
result
当此方法返回时,如果转换成功,则包含与 s 所包含的数字等效的 32 位有符号整数值;如果转换失败,则包含零。如果 s 参数为 空引用(在 Visual Basic 中为 Nothing),格式不正确,或者表示的数字小于 MinValue 或大于 MaxValue,则转换会失败。该参数未经初始化即被传递。
返回值
如果 s 转换成功,则为 true;否则为 false。

以后就都用TryParse吧!。

2.sql分页新方法
sql server2005增加了很多新函数,其中一个比较有意思的是ROW_NUMBER。使用这个函数可以给查询结果表中增加一个自动增长的连续的列。下面是sdk的具体说明
ROW_NUMBER
返回结果集分区内行的序列号,每个分区的第一行从 1 开始。
ROW_NUMBER ( )     OVER ( [ <partition_by_clause> ] <order_by_clause> )
备注
ORDER BY 子句可确定在特定分区中为行分配唯一 ROW_NUMBER 的顺序。

对sql语句分页的朋友可以立刻发现这个函数的价值。没错,以前,我们在分页存储过程中构造一个虚拟表来存放连续序号的做法,现在用这一个函数就可以。
一个具体的例子是
select *, ROW_NUMBER() OVER (order by ArticleID) as Pos
from dbo.ES_Article
这会给结果表增加一个新列Pos,里面的值为连续增长的序号。
有了这个,在用wher pos<max and pos>min来进行分页就非常简单了。

以后有机会要试验一下这个函数!

posted on 2006-08-06 17:32  Notus|南色的风  阅读(730)  评论(3编辑  收藏  举报