有人能给我解释一下这句台词吗?
IEnumerable<string> filteredNames = Enumerable.Where(names, n => n.Length >= 4);
我明白这一点:
string[] names = { "Billy", "Bob", "Steve" } var linq = from name in names where (name.Length >= 4) select name;
3b6akqbq1#
这两个代码在字面上是相同的,并且将编译成完全相同的东西。第二个代码将被编译器简单地转换成第一个代码。
bz4sfanl2#
由于Linq方法只是扩展方法(如果你还没有读过相关内容,请搜索一下),因此:
IEnumerable<string> filteredNames = System.Linq.Enumerable.Where(names, n => n.Length >= 4);
也是这样:
IEnumerable<string> filteredNames = names .Where(name => name.Length >= 4);
现在说得通了吗?如果仍然没有意义,请搜索“c# lambdas”和“c# delegates”。
vmdwslir3#
第一行是直接调用IEnumerable.Where Extension方法,而不是通过names示例调用。更常见的情况是(在很多在线示例中),它看起来像这样:
IEnumerable.Where
names
IEnumerable<string> filteredNames = names.Where(n => n.Length >= 4);
在这种形式下,它也更清晰--阅读我们所拥有的代码行筛选的名称等于长度大于(或等于)4的名称
vshtjzan4#
这通常会被写成一个扩展方法:
我认为它的含义在这种形式下更清楚,它相当于您的查询语法:它会提供一个枚举对象,列出4个或更多字符的名称。
yqkkidmi5#
为了帮助您理解它们的相同之处,请尝试更改一些代码:
string[] names = { "Billy", "Bob", "Steve" }; var filteredNames1 = from n in names where (n.Length >= 4) select n; IEnumerable<string> filteredNames2 = System.Linq.Enumerable.Where(names, n => n.Length >= 4);
6bc51xsx6#
Enumerable.Where(....),Enumerable.Any(....),Enumerable.Aggregate(....),Enumerable有很多方法,在括号中,你可以使用集合名,然后使用linq语句)..或者在下面的语句中,你不需要在括号中包含集合名.. IEnumerable filteredNames = names.Where(n =〉n.Length〉= 4);
6条答案
按热度按时间3b6akqbq1#
这两个代码在字面上是相同的,并且将编译成完全相同的东西。第二个代码将被编译器简单地转换成第一个代码。
bz4sfanl2#
由于Linq方法只是扩展方法(如果你还没有读过相关内容,请搜索一下),因此:
也是这样:
现在说得通了吗?
如果仍然没有意义,请搜索“c# lambdas”和“c# delegates”。
vmdwslir3#
第一行是直接调用
IEnumerable.Where
Extension方法,而不是通过names
示例调用。更常见的情况是(在很多在线示例中),它看起来像这样:在这种形式下,它也更清晰--阅读我们所拥有的代码行
筛选的名称等于长度大于(或等于)4的名称
vshtjzan4#
这通常会被写成一个扩展方法:
我认为它的含义在这种形式下更清楚,它相当于您的查询语法:它会提供一个枚举对象,列出4个或更多字符的名称。
yqkkidmi5#
为了帮助您理解它们的相同之处,请尝试更改一些代码:
6bc51xsx6#
Enumerable.Where(....),Enumerable.Any(....),Enumerable.Aggregate(....),Enumerable有很多方法,在括号中,你可以使用集合名,然后使用linq语句)..或者在下面的语句中,你不需要在括号中包含集合名.. IEnumerable filteredNames = names.Where(n =〉n.Length〉= 4);