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

LINQ使用多个键执行GroupBy分组未得到预期结果的问题求助

你的代码问题出在VB.NET匿名类型的属性默认不参与等值比较,GroupBy分组时会把两个属性值完全相同的匿名对象判定为不同的键,导致分组拆分不符合预期。

只需要在匿名类型的两个分组属性前加上Key关键字,标记这两个属性为键属性,参与等值比较和哈希码计算即可,修正后的代码如下:

Dim uploads = items.GroupBy(Function(g) New With {Key g.CategoryId, Key g.TypeId}) _
                                       .OrderBy(Function(g) g.Key.CategoryId) _
                                       .ThenBy(Function(g) g.Key.TypeId) _
                                       .Select(Function(g) New UploadListItemViewModel With {
                                            .CategoryId = g.Key.CategoryId,
                                            .TypeId = g.Key.TypeId,
                                            .Uploads = g.ToList()
                                        })

修改后GroupBy会逐位对比两个键的属性值,相同CategoryId和TypeId的条目会被合并到同一分组,你提到的Category 1 / Type 8分组的条目数量就会恢复为预期的3条。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:48:00