gpt4 book ai didi

c# - 将查询理解转换为 LINQ 中的可枚举扩展方法

转载 作者:行者123 更新时间:2023-11-30 14:41:18 27 4
gpt4 key购买 nike

如何将以下查询转换为函数调用?我知道编译器在幕后执行此操作,但不知道我将如何查看结果

        var query = from item in Enumerable.Range(0, 10)
from item2 in Enumerable.Range(item, 10)
from item3 in Enumerable.Range(item2, 10)
select new { item, item2, item3 };

最佳答案

在这种情况下,它使用 SelectMany 和一个称为透明标识符 的概念来保​​留现有的范围变量。所以您的查询将转换为:

var query = Enumerable.Range(0, 10)
.SelectMany(item => Enumerable.Range(item, 10),
(item, item2) => new { item, item2 })
.SelectMany(z => Enumerable.Range(z.item2, 10),
(z, item3) => new { z.item, z.item2, item3 });

(在这种情况下,z 是透明标识符。如果在最后一个 from 子句,将引入另一个透明标识符。)

翻译都在 C# language specification, section 7.16 中描述。 .

关于c# - 将查询理解转换为 LINQ 中的可枚举扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4322260/

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