1. 初始化数组jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
int[] a = Enumerable.Repeat(-1, 10).ToArray();jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
int[] b = Enumerable.Range(0, 10).ToArray();jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
int[] c = Enumerable.Range(0, 10).Select(i => 100 + 10 * i).ToArray();
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
注意点:jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
    这个方法可以避免 for 循环;jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
    Linq 会动态的产生数组,因此垃圾数组可能在运行时才得到清理,要构造很大的数组,还是用常规的 for 循环比较好。jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
2. 用一个循环枚举多个数组jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
普通做法:jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
foreach (var x in array1) {jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
    DoSomething(x);jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
}jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
foreach (var x in array2) {jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
    DoSomething(x);jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
}
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
技巧:jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
foreach (var x in array1.Concat(array2)) {jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
    DoSomething(x);jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
}
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
3. 生成长度为 N 的随机序列jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
Random rand = new Random();jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
var randomSeq
= Enumerable.Repeat(0, N).Select(i => rand.Next());
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
4. 生成字符串jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
生成长度为 N 的 "ABCABC.." 字符串:jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
string str = new string(jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
    Enumerable.Range(
0, N)jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
    .Select(i
=> (char)(‘A’ + i % 3))jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
    .ToArray());
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
另一个例子:jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
string values = string.Join(string.Empty, Enumerable.Repeat(pattern, N).ToArray());jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
5. 转换序列或集合jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
在 C#/VB 中不允许直接将一个类型 T 的序列转换为另一个类型 U 的序列,即使 U 是 T 的父类也不行。这是因为如果允许这样,就可能会产生运行时异常。但用 Linq 可以有一些方法来做类似的转换:jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
IEnumerable<string> strEnumerable = …;jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
IEnumerable
<object> objEnumerable = strEnumerable.Cast<object>();
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
要转换 List<T> 必须通过复制:jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
List<string> strList = …;jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
List
<object> objList = new List<object>(strList.Cast<object>());
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
或者:jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
var objList = strList.Cast<object>().ToList();jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
6. 将一个值转换为仅包含它的长度为1的序列jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
可以创建数组,但用 IEnumerable 会更通用:jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
IEnumerable<int> seq = Enumerable.Repeat(myValue, 1);jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
7. 遍历序列的全部子集jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
可以用来解背包问题等。jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
            var arr = new string[] { "foo", "bar", "xxx" };jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
            var subsets
= from m in Enumerable.Range(0, 1 << arr.Length)jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
                          selectjÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
                              from i
in Enumerable.Range(0, arr.Length)jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
                             
where (m & (1 << i)) != 0jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
                              select arr;jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
           
foreach (var subset in subsets)jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
            {jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
               
foreach (var element in subset)jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
                {jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
                    Console.Write(element
+ " ");jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
                }jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
                Console.Write(
"\n");jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
            }jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
            Console.ReadLine();
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã 
这个比较难理解一点。jÃIªº|ÊHRÐwww.netcsharp.cnßÿ 5uÿ—ã