2016-07-25 100 views
-5

我已经四处寻找这些枚举方法的一些很好的解释,但似乎找不到可以正确解释它的方法。如何使用Enumerable方法

我一直在使用他们几个像选择,跳跃,排序依据和排序,但我不知道他们是如何工作的

例如

string[] RandomNames = names.OrderBy(x => rnd.Next()).ToArray(); 

string[] SelectedNames = names.Select(i => i.ToString()).ToArray() 

所以有几件事我不清楚:

  • 那么=>实际上做什么
  • 如何工作的小组以及它将用于什么。

简单的解释将不胜感激,但深入的解释是我正在寻找。

+1

'=>'装置的λ函数,它带有一个参数('x'),并返回'RND函数以上于样品中。Next()'值 –

+2

您可能想从“Documentation”中阅读:http://stackoverflow.com/documentation/c%23/68/linq-queries/4735/basics#t=201607251259571763764 – Kinetic

+0

想想lambda参数(x)作为这些函数的数组内的单个项目 – Hristo

回答

2

=>是lambda表达式。

什么是lambda表达式,为什么这么有用?让我们考虑例如: 你的随机integers列表中,您要选择只除以2。在正常的方式,它看起来就像是:

public bool IsDevidedByTwo(int number) 
{ 
    if(number % 2 == 0) 
     return true; 
    return false ; 
} 

List<int> DevidedByTwoList = new List<int>; 

foreach(var number in RandomIntsList) 
{ 
    if(IsdevidedByTwo(number)) DevidedByTwoList.Add(number); 
} 

很容易的清楚,但需要很大的空间,这样你就可以” t立即了解它,特别是当功能IsDevidedByTwo()将在不同的文件。 如何将看起来当您使用兰巴表达式和LINQ,如:

List<int> DevidedByTwoList = RandomIntsList.Where(number => number % 2 == 0).ToList(); 

一号线,而不是12

number => number % 2==0是lambda表达式。它检查数字是否被2分开。它的功能非常像IsDevidedByTwo函数,但不需要命名。

.Where()是LINQ方法女巫可以过滤例如列表,只选择括号中的元素满足条件。

如果您想了解更多,请阅读关于LINQlambda expresions的内容。

1

lambda表达式是一个匿名函数,它主要用于在LINQ中创建委托。简而言之,它是一种没有声明的方法,即访问修饰符,返回值声明和名称。

它减少了打字。不需要指定函数的名称,返回类型和访问修饰符。读取代码时,不需要在别处查找方法的定义。

这是一篇很好的文章,附有例子和解释。

geekswithblogs