举例来说,你可以这样描述你的数据:
ublic class CoOrdinate
{
public int x ;
public int y;
}
在C#里,你可以像下面一样轻松的声明一个数据库表的逻辑等同式:
// Use Object and collection initializers
Listcoords = ... ;
现在你的数据可以作为一个collection来实现 IEnumerable ,你可以轻松的像如下方式查询数据:
var filteredCoords =
from c in coords
where x == 1
select (c.x, c.y)
在以上SQL风格的格式中,"from"、"where"和"select"是查询表达式,用到了C# 3.0的一些特性如匿名类型,扩展方法,隐式类型本地变量等。这样,你可以使用SQL风格的格式,将无联系的数据整合一起来工作。
每个查询表达式实际上转变为一个C#的调用,如:
where x == 1
将会转换为:
coords.where(c =>c.x == 1)
你可以看到,这个看上去很像一个可怕的Lambda表达式和扩展方法。C# 3.0还有其他很多关于它们的查询表达式和规则。
表达式树
C# 3.0包含了一个新类型,允许表达式能够当作运行时的数据使用。这个类型,System.Expressions.Expression ,只是一个内存中一个lambda表达式的重新表达。结果是你的代码可以在运行时修改和检查Lambda表达式。
如下是一个表达式树的例子:
Expressionfilter = () =>Console.WriteLine("Hiya!!") ;
使用如上的表达式树的方法,你可以使用过滤器变量中的各种属性来检查树的内容。
结束语
C# 3.0提供了一些新的特性,使得你可以更轻松的完成一个程序员和架构设计师的工作,同时也保持了程序语言的严谨和清晰的结构。
C# 3.0目前还处于襁褓中,还将在未来的数月中长大,但是它所能改变的一切,紧靠其强大的后盾.NET框架,它的体系结构和设计模式,值得你的关注。
http://heziji0672.blog.com
http://ancxj.blog.com
http://shangxiong00737.blog.com
http://ki8912.blog.com
http://cangxi4868.blog.com
http://xuji1231.blog.com
http://shanjing8665.blog.com
http://zhe782.blog.com
http://ranzhuida775.blog.com
http://lai6713.blog.com/
http://feitunsi36.blog.com
http://sad8812.blog.com
http://zhaopousha79787.blog.com
http://kasid98.blog.com
http://shimeici184015.blog.com
http://anha7821.blog.com
http://zaiyouy7202.blog.com
http://sadko981.blog.com/
http://rendeng182212.blog.com
http://ki8123.blog.com
http://yixiemi13415.blog.com
http://ki78912.blog.com
http://zhituian1653.blog.com
http://m81231.blog.com
http://qiaogang1659.blog.com
http://hewr81.blog.com
http://aoaode39831.blog.com
http://lusx712.blog.com/
http://keyongzh5221.blog.com
http://ls7121.blog.com
http://congluji2808.blog.com
http://basi7812.blog.com
http://weixia9836.blog.com
http://xuays121.blog.com
http://xiongrenche14.blog.com
http://yuxuanji.blog.com
http://qingma9737.blog.com
http://jua7812.blog.com/
http://shangfei95393.blog.com
http://xias1231.blog.com
http://muliecan7113.blog.com
http://has8121.blog.com
http://congshi2329.blog.com
http://xinahui91.blog.com
http://pinfudui67883.blog.com
http://jzin7891.blog.com
http://renjia1161.blog.com
http://jinliufu.blog.com
http://ganwolun1706.blog.com
http://jinliud12.blog.com
http://yagangxin01050.blog.com
http://miasd712.blog.com
http://xianzh5942.blog.com
http://xiuas81.blog.com
http://liangpanzh00386.blog.com
http://you8121.blog.com
http://naohanba97971.blog.com
http://xibai11.blog.com/
http://zenjiehua3187.blog.com
http://zuqqiubao.blog.com
http://naowengj3291.blog.com
http://kamai412.blog.com
http://weizijing43227.blog.com
http://huangdaxian.blog.com
http://mumenlu860.blog.com
http://maimawz.blog.com
http://huancaol58001.blog.com
http://hdxjsz.blog.com
http://youjipu5744.blog.com
http://lhcqnc.blog.com
http://chenp8205.blog.com
http://usd9812.blog.com
http://fanganf6957.blog.com
http://tsp4887.blog.com
http://jiyouxin8565.blog.com
http://xg140kj.blog.com/
http://xinxia0141.blog.com
http://xg112kj.blog.com/
http://yajia7668.blog.com
http://c6cccc.blog.com
http://chifeila119.blog.com
http://kaijiangjg.blog.com
http://zhaoedui29882.blog.com
http://zhu109kj.blog.com
http://difutu91605.blog.com
http://xg2014k.blog.com
http://benjiyi42440.blog.com
http://sad11211.blog.com/
http://ougangdo774.blog.com
http://fggslt.blog.com
http://xinpanjiu33.blog.com
http://huangdaxianlt.blog.com
http://songsh841.blog.com
http://kj2014jl.blog.com
http://jixiongj0406.blog.com
http://jixiongj0406.blog.com
http://lujiaora89681.blog.com
http://tiesua121.blog.com/
http://cheaos7036.blog.com
http://haungdax.blog.com