代码改变世界

.net下纯代码实现求两个集合的笛卡尔积

2010-09-18 11:32  Hundre  阅读(2810)  评论(2编辑  收藏  举报

使用环境:

  1、.net 3.5,因为要使用linq(为什么用LINQ,因为小弟算法比较差,不会写算法直接实现.......)

  2、求两个list<string>的笛卡尔积,结果为另一个list<string>(别的似乎也可以吧,没实验过)

 

开始:

  个人感觉其实原理很简单,就是使用LINQ来模仿SQL里面的FROM语句来实现对两个集合求笛卡尔积,直接上代码吧

 

代码
            List<string> redSource = new List<string> { "01""02""030" };
            List
<string> blueSource = new List<string> { "01""02""030" };
            IEnumerable
<string> result = from red in redSource from blue in blueSource select red + blue;
            List
<string> resultColor = result.ToList<string>();

 这个链接的是两个string,如果链接的两个数据类型属于数字,还可以把“+”号改成相应的运算符

 运行结果如下:

代码虽然简单,不过中间实现的原理确是有点复杂,小弟也是参考了网上的文章,不过如果仅仅是使用的话这应该就已经够了

有兴趣的朋友也可以研究下

http://morganchengmo.spaces.live.com/blog/cns!9950CE918939932E!3822.entry

 

文笔又限,欢迎拍砖

 

好了,结束  嘿嘿