等效于“Into”的Linq方法[重复]

Posted

技术标签:

【中文标题】等效于“Into”的Linq方法[重复]【英文标题】:Linq method equivalent for "Into" [duplicate] 【发布时间】:2021-08-16 10:04:17 【问题描述】:

我确实有一个 LINQ 查询:

var groupedResult = from address in Address.GetAddresses()
                      group new  City = address.City, HasManyInhabitants = address.Inhabitants > 20  
                      by address.City into addressWithInfo
                      select addressWithInfo;

效果很好。但我正在寻找这个查询的方法基础方法。目前我使用

var groupedResult = Address.GetAddresses()
                  .Select(a => new  City = a.City, HasManyInhabitants = a.Inhabitants > 20 )
                  .GroupBy(a => a.City)
                  .Select(a => a);

它可以工作,但它似乎不正确,因为反编译的代码(使用 ILSpy)看起来不相似。

问候, 托斯滕

【问题讨论】:

这能回答你的问题吗? Group by in LINQ 【参考方案1】:

你只想要这个:

var groupedResult =
    Address
        .GetAddresses()
        .GroupBy(
            address => address.City,
            address => new
            
                City = address.City,
                HasManyInhabitants = address.Inhabitants > 20
            );

【讨论】:

【参考方案2】:

into 用于分配标识符(即变量),以便您可以继续查询。这在 LINQ 语法中是必需的,否则您将无法访问组结果。

要使用 LINQ 方法获得类似的结果,您可以定义一个变量来获取 GroupBy() 返回的结果,但您实际上不需要它来继续查询,因为您可以像在例子

into关键字在这里详细解释https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/into

【讨论】:

以上是关于等效于“Into”的Linq方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章

等效于链式 LINQ 扩展方法调用中的 'let' 关键字的代码

C# 等效于 Java 的 Arrays.fill() 方法[重复]

C# linq 的 Java/Android 最佳等效项 [重复]

Linq distinct 方法仅适用于特定属性[重复]

linq 等效于通用函数的'select *' sql?

LINQ 和 SQL 中看似等效的查询返回不同的结果 [重复]