You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# LINQ转Lambda表达式:GroupBy与into g/select g部分写法问询

正确转换LINQ查询语法为Lambda表达式

嘿,我帮你梳理下这个问题~你原来的查询语法是按RoomID和RateGroupID的组合作为分组键来处理数据的,但你尝试的Lambda写法用错了GroupBy的重载参数,咱们来修正下:

先看你原本的查询语法:

var ListInOrder = (from f in finaldatelist 
                   group f by new { f.RoomID, f.RateGroupID } into g 
                   select g);

这段代码的核心逻辑是把finaldatelist的元素按RoomID+RateGroupID的组合分组,最终返回所有分组的集合(也就是IGrouping<匿名类型, 元素类型>的集合)。

你尝试的GroupBy(x => x.RoomID, x => x.RateGroupID)里,第二个参数是「元素选择器」(用来指定分组里要保留的元素内容),并不是分组键的一部分。正确的做法是把分组键写成和查询语法一致的匿名类,直接传给GroupBy的第一个参数:

正确的Lambda写法

var ListInOrder = finaldatelist.GroupBy(f => new { f.RoomID, f.RateGroupID });

为什么可以省略Select()?

因为原来的查询语法里select g就是直接返回分组后的IGrouping对象,而GroupBy方法本身返回的就是这个集合,所以完全不需要额外加Select()。如果你想显式写出这一步(虽然没必要),也可以写成:

var ListInOrder = finaldatelist.GroupBy(f => new { f.RoomID, f.RateGroupID })
                               .Select(g => g);

这和上面的写法完全等价,只是多了一步冗余的选择操作。

内容的提问来源于stack exchange,提问作者supsupdb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:54:53