EntityFramework group by linq 查询

Posted

技术标签:

【中文标题】EntityFramework group by linq 查询【英文标题】:EntityFramework group by linq query 【发布时间】:2015-02-16 14:44:40 【问题描述】:

我有以下 2 个表:

Account
----------
account_id **PK**
account_name
account_type_id **FK** 

Account_Type
-------------
account_type_id **PK (FK in account table)**
account_type_name
account_type_reference

使用实体框架我试图得到这样的结果:

DbSet.Where(Account => Account.Account_Type.account_type_name == 'type1').ToList());

这可行,但是我不确定如何将 group by 添加到此语句中。我想按 Account_Type_id、Account_type_name、Account_type_reference 对这些进行分组,这样我就不会得到重复的行。我该怎么做?

谢谢

【问题讨论】:

account_type_id 分组就足够了,因为它是独一无二的(我希望如此)。 【参考方案1】:

您可以使用 Linq GroupBy 函数添加分组:

DbSet.Where(Account => Account.Account_Type.account_type_name == "type1")
    .GroupBy(x => x.Account_Type.account_type_id).ToList();

然后你会得到一个组列表。然后每个组都有 Key (account_type_id),并且组本身是 Account 对象的 IEnumerable

【讨论】:

以上是关于EntityFramework group by linq 查询的主要内容,如果未能解决你的问题,请参考以下文章

Group by、Count 和 Lambda 表达式

SQL CE 4 错误:ntext 和 image 数据类型不能在 WHERE、HAVING、GROUP BY、ON 或 IN 子句中使用

怎么使用group by?

如何使用group by 分组查询表中所有字段信息

高级分组group by group by cube group by rollup 使用说明

mysql 可以group by 两个字段吗