如何使用Enumerable方法

时间:2016-07-25 12:58:31

标签: c# enumeration

我已经四处寻找对这些可枚举方法的一些很好的解释,但似乎找不到能够正确解释它的方法。

我一直在使用其中一些像select,skip,orderby和sort但我不知道它们是如何工作的

例如

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

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

所以有一些我不清楚的事情:

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

我们将非常感谢您的简要解释,但我正在寻找深入解释。

2 个答案:

答案 0 :(得分: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);
}

它很容易清晰但占用大量空间,因此您无法立即理解它,尤其是当函数IsDevidedByTwo()将在不同的文件中时。 使用lamba表达式和LINQ时的外观如何:

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

一行代替12行。

number => number % 2==0是lambda表达式。它检查数字是否与2分开。它像IsDevidedByTwo函数一样工作,但你不需要命名它。

.Where()是LINQ方法,可以过滤示例列表并在括号中仅选择元素满足条件。

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

答案 1 :(得分:1)

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

减少打字。无需指定函数的名称,返回类型及其访问修饰符。阅读代码时,您不需要在其他地方查找方法的定义。

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

geekswithblogs