用LINQ简化代码的5个技巧

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

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();










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值