LINQ序列详细描述

开发 后端
这里介绍LINQ序列,有的时候,遍历数组的所有子集很有用。子集和问题、布尔可满足性问题以及背包问题都可以通过遍历某个序列的所有子集来简单解决。

学习LINQ时,经常会遇到LINQ序列问题,这里将介绍LINQ序列问题的解决方法。

自从学习LINQ以来,我发现了很多使用LINQ来改善代码的方式。每一个技巧都让代码写起来更简单,可读性更强。

这里总结了这些技巧。我会介绍如何使用LINQ来:
◆初始化数组
◆在一个循环中遍历多个数组
◆生成随机序列
◆生成字符串
◆转换序列或集合
◆把值转换为长度为1的序列
◆遍历LINQ序列的所有子集

本文介绍遍历LINQ序列的所有子集,如果你在LINQ方面有心得也欢迎在评论中一起分享。

遍历LINQ序列的所有子集

有的时候,遍历数组的所有子集很有用。子集和问题、布尔可满足性问题以及背包问题都可以通过遍历某个序列的所有子集来简单解决。

有了LINQ,我们可以如下声场所有arr数组的子集:

  1. T[] arr = ...;  
  2. var subsets = from m in Enumerable.Range(0, 1 << arr.Length
    select from i in Enumerable.Range(0, arr.Length) where 
    (m & (1 
    << i)) != 0 select arr[i]; 

注意,如果子集的个数超过了int,上面的代码就不能工作。因此,仅当你知道arr的长度不超过30的时候才去使用这个方式。如果arr长度超过30,你应该不会是想去遍历所有的子集,因为可能这会耗费几分钟或更长的时间。

希望这些技巧对你有用,这些示例代码都使用C#实现,但是你可以很容易得改变为其它.NET语言。

【编辑推荐】

  1. LINQ查询操作剖析
  2. LINQ生成字符串概述
  3. LINQ查询语法简单描述
  4. LINQ解决方案简单概述
  5. LINQ查询结果分析
责任编辑:佚名 来源: CSDN
相关推荐

2009-09-14 14:58:52

LINQ to XML

2009-09-14 16:33:55

LINQ To XML

2009-09-08 11:09:39

LINQ数据源

2009-09-24 16:19:53

Hibernate应用

2009-09-25 14:28:40

Hibernate S

2010-03-18 10:04:39

Python Djan

2010-02-05 16:58:18

Android服务

2009-11-18 11:14:49

2009-09-25 11:04:32

Hibernate3实

2009-08-10 16:40:03

C#索引器

2009-10-15 14:59:45

网络布线光纤技术

2010-04-09 17:45:06

Oracle索引

2009-09-07 15:15:43

2009-08-26 15:53:48

C#扩展方法

2009-08-27 15:17:40

C# const变量

2009-10-10 10:04:50

RHEL合法使用

2010-09-08 15:10:48

2011-11-02 09:29:42

存储虚拟化虚拟化

2009-09-03 17:59:18

C#调用事件

2009-10-16 11:02:40

VB调用动态连接库
点赞
收藏

51CTO技术栈公众号