知识大全 使用LINQ来简化编程的7个技巧
Posted 序列
篇首语:大道之行,天下为公。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 使用LINQ来简化编程的7个技巧相关的知识,希望对你有一定的参考价值。
使用LINQ来简化编程的7个技巧 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
自从学习LINQ以来 我发现了很多使用LINQ来改善代码的方式 每一个技巧都让代码写起来更简单 可读性更强
这里总结了这些技巧 我会介绍如何使用LINQ来
◆初始化数组 ◆在一个循环中遍历多个数组 ◆生成随机序列 ◆生成字符串 ◆转换序列或集合 ◆把值转换为长度为 的序列 ◆遍历序列的所有子集 如果你在LINQ方面有心得也欢迎在评论中一起分享
初始化数组
通常 我们需要把数组的值初始化为相同的值或递增的序列值 或者可能是一个步进不为 的递增/递减序列 有了LINQ 我们可以在数组的初始化器中完成所有工作 不再需要循环!
在如下的示例代码中 第一行代码初始化了一个长度为 的数组 所有元素都是 第二行代码初始化b为 到 第三行代码初始化c为 到
int[] a = Enumerable Repeat( ) ToArray(); int[] b = Enumerable Range( ) ToArray(); int[] c = Enumerable Range( ) Select(i => + * i) ToArray();
要提醒一下 如果你初始化一个很大的数组 最好不考虑这种优雅的方式而是使用传统的方式来替代 LINQ的这种解决方案会动态产生数组 因此垃圾数组需要在运行时被回收 也就是说 我总是会在小数组或测试调试代码的情况下使用这种技巧
在一个循环中遍历多个数组
有个朋友问我一个C#的问题 有没有办法在一个循环中遍历多个集合?他的代码差不多是这样
foreach (var x in array ) DoSomething(x); foreach (var x in array ) DoSomething(x);
这样的话 循环主体会很大 而且他也不希望这样重复的代码 但是 他又不希望创建一个数组来保存array 和array 的所有元素
LINQ提供了一种优雅的解决方案 Concat操作 我们可以使用单个循环来重写上面的代码 如下
foreach (var x in array Concat(array )) DoSomething(x);
注意 由于LINQ在枚举器级别进行操作 他不会产生新的数组来保存array 和array 的元素 因此 除了优雅之外 这个方案还很高效
生成随机序列
这是一个生成N长度随机序列的简单技巧
Random rand = new Random(); var randomSeq = Enumerable Repeat( N) Select(i => rand Next());
有了LINQ的延迟特性 序列不会实现进行计算并保存到数组中 而是在迭代randomSeq的时候按需生成随机数
生成字符串
LINQ同样也是生成各种类型字符串的好工具 对于测试或调试 生成字符串时很有用的 假设我们需要生成一个N长度的字符串 按照 ABCABCABC 的方式 使用LINQ 解决方案非常优雅
string str = new string( Enumerable Range( N) Select(i => (char)( A + i % )) ToArray());
Petar Petrov给出了另外一种有趣的方式使用LINQ来生成字符串string values = string Join(string Empty Enumerable Repeat(pattern N) ToArray());
转换序列或集合
cha138/Article/program/net/201311/13140相关参考
.NETLINQ数据转换 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 使用LINQ进行数据转换
LINQ实现常见SQL查询 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Top查询skip(i
LINQ语句检查空对象的问题 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
用LINQ做成的RSS查看器 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! privatevoi
Linq入门演练:lambda表达式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 今天大家一同
知识大全 Linq to DataSet 之Access查询
LinqtoDataSet之Access查询 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!Linq
.net开发绑定到LINQ查询的结果实例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 本示例演
VisualBasic和C#中的LINQ聚合 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Ag
知识大全 ADO.NET Framework beta 3和Linq
ADO.NETFrameworkbeta3和Linq 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
如何在ASP.NET中了解LINQ语句性能 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 如果是