gpt4 book ai didi

c# - 不同形式的 LinQ

转载 作者:行者123 更新时间:2023-11-30 18:49:29 24 4
gpt4 key购买 nike

string grid = @"08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08";
string[] res = grid.Split(' ');

var lowNums = from n in res
where n.Length > 0
select int.Parse(n);

我无法将上述 linQ 语句转换为等效的 lambda WHERE。以下有效,但只返回 enumernable<string>而我想要一个 enumerable<int> :

IEnumerable<string> all = res.Where(x => x.Length > 0);

最佳答案

I am having trouble converting the above LINQ statement to a lambda Where() equivalent.

然后您要做的是仔细阅读 C# 规范的第 7.16.2 节。它将逐步引导您完成整个过程。

它说:

A query expression with a where clause

from x in e
where f
...

is translated into

from x in ( e ) . Where ( x => f )
...

所以你的查询

from n in res  
where n.Length > 0
select int.Parse(n);

翻译成

from n in (res).Where(n=>n.Length > 0)
select int.Parse(n)

这是翻译的第一阶段。现在再次回到规范:

A query expression of the form

from x in e select v

is translated into

( e ) . Select ( x => v )

所以您的已翻译一次的查询

from n in (res).Where(n=>n.Length > 0)
select int.Parse(n)

进一步翻译成

((res).Where(n=>n.Length > 0)).Select(n=>int.Parse(n))

现在它不再是查询表达式,因此不再进行句法转换。

关于c# - 不同形式的 LinQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3151142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com