等效于“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() 方法[重复]