知识大全 使用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

相关参考

知识大全 .NET LINQ数据转换

.NETLINQ数据转换  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  使用LINQ进行数据转换

知识大全 LINQ 实现常见SQL查询

LINQ实现常见SQL查询  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Top查询skip(i

知识大全 LINQ语句检查空对象的问题

LINQ语句检查空对象的问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 用LINQ做成的RSS查看器

用LINQ做成的RSS查看器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  privatevoi

知识大全 Linq入门演练:lambda表达式

Linq入门演练:lambda表达式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  今天大家一同

知识大全 Linq to DataSet 之Access查询

LinqtoDataSet之Access查询  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!Linq

知识大全 .net开发绑定到LINQ查询的结果实例

.net开发绑定到LINQ查询的结果实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本示例演

知识大全 Visual Basic和C#中的LINQ聚合

VisualBasic和C#中的LINQ聚合  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Ag

知识大全 ADO.NET Framework beta 3和Linq

ADO.NETFrameworkbeta3和Linq   以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 如何在ASP.NET中了解LINQ语句性能

如何在ASP.NET中了解LINQ语句性能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  如果是