我已经四处寻找对这些可枚举方法的一些很好的解释,但似乎找不到能够正确解释它的方法。
我一直在使用其中一些像select,skip,orderby和sort但我不知道它们是如何工作的
例如
string[] RandomNames = names.OrderBy(x => rnd.Next()).ToArray();
或
string[] SelectedNames = names.Select(i => i.ToString()).ToArray()
所以有一些我不清楚的事情:
我们将非常感谢您的简要解释,但我正在寻找深入解释。
答案 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方法,可以过滤示例列表并在括号中仅选择元素满足条件。
如果您想了解更多内容,请阅读LINQ和lambda expresions。
答案 1 :(得分:1)
lambda表达式是一个匿名函数,它主要用于在LINQ中创建委托。简单地说,它是一个没有声明的方法,即访问修饰符,返回值声明和名称。
减少打字。无需指定函数的名称,返回类型及其访问修饰符。阅读代码时,您不需要在其他地方查找方法的定义。
这是一篇非常好的文章,附有例子和解释。