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

如何在Entity Framework中按Age与sex属性对实体分组?

正确的多属性分组实现方式

错误原因分析

你当前的GroupBy调用参数逻辑错误:

var resultTable= dbContext.CashVacs.GroupBy(g => g.sex, g => g.age);

这段代码用了GroupBy的重载:GroupBy<TSource, TKey, TElement>(Func<TSource,TKey>, Func<TSource,TElement>),作用是按第一个参数指定的单个键分组,再用第二个参数筛选组内元素,并非同时按两个字段分组。另外实体中年龄属性是Age(大写A),你写的g.age是小写,会引发编译错误。

正确分组写法

要同时按sex和Age分组,需创建包含这两个属性的匿名类型作为分组键,示例如下:

基础分组(保留组内原始实体)

var resultTable = dbContext.myEntities.GroupBy(g => new { g.sex, g.Age });

分组后聚合统计(如统计每组人数)

var groupedWithStats = dbContext.myEntities
    .GroupBy(g => new { g.sex, g.Age })
    .Select(g => new 
    {
        性别 = g.Key.sex,
        年龄 = g.Key.Age,
        分组人数 = g.Count(),
        组内实体ID列表 = g.Select(e => e.Id).ToList()
    });

关键说明

  • 匿名类型new { g.sex, g.Age }会作为分组的唯一标识,只有当两个实体的sex和Age完全相同时,才会被归入同一组。
  • 分组后可通过g.Key访问当前组的键值(对应sex和Age),通过g直接遍历组内的所有实体元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:50:32