1.初始化数组
有时候,你只是需要初始化一个数组用来测试数据,比如一个数组都是-1, 一个数组从0,1,...9, 另外一个是100,110,120....190,用LINQ可以简化你的代码:
int[] a = Enumerable.Repeat(-1, 10).ToArray();
int[] b = Enumerable.Range(0, 10).ToArray();
int[] c = Enumerable.Range(0, 10).Select(i => 100 + 10 * i).ToArray();2.一次遍历多个数组
有时候我们希望在一个循环中遍历多个数组:
foreach (var x in array1) {
DoSomething(x);
}
foreach (var x in array2) {
DoSomething(x);
}用LINQ就简单多了:
foreach (var x in array1.Concat(array2)) {
DoSomething(x);
}3.产生随机序列
有时候我们需要产生一个随机序列,用LINQ来生成非常方便,下列的代码由于LINQ的延迟执行特性,只有在遍历的时候才真正产生随机数:
Random rand = new Random();
var randomSeq = Enumerable.Repeat(0, N).Select(i => rand.Next());4.生成字符串
有时候为了测试,我们需要生成特殊的字符串,例如:ABCABCABC....长度是N,使用LINQ会非常优雅:
string str = new string(
Enumerable.Range(0, N)
.Select(i => (char)('A' + i % 3))
.ToArray());或者:
string values = string.Join(string.Empty, Enumerable.Repeat(pattern, N).ToArray());5.转换序列或集合
C#中你不能轻易转换List<string>为List<object>,但可以转换IEnumerable<U> 为IEnumerable<T>:
IEnumerable<string> strEnumerable = ...;
IEnumerable<object> objEnumerable = strEnumerable.Cast<object>();如果你要转换List<string>为List<object>,有点麻烦:
List<string> strList = ...;
List<object> objList = new List<object>(strList.Cast<object>());或者:
var objList = strList.Cast<object>().ToList();

本文介绍了如何使用LINQ简化数组初始化、多数组遍历、生成随机序列、字符串生成及序列转换等常见操作,提高开发效率。
1万+

被折叠的 条评论
为什么被折叠?



