From 27bd3ab4283a6226b55b9c11554d853d112cde4c Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Mon, 7 Dec 2020 23:52:13 +0800 Subject: [PATCH] update --- 分组聚合查询.md | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/分组聚合查询.md b/分组聚合查询.md index 4c57c3d..1a224f0 100644 --- a/分组聚合查询.md +++ b/分组聚合查询.md @@ -3,7 +3,8 @@ static IFreeSql fsql = new FreeSql.FreeSqlBuilder() .UseConnectionString(FreeSql.DataType.MySql, connectionString) .Build(); //请务必定义成 Singleton 单例模式 -class Topic { +class Topic +{ [Column(IsIdentity = true, IsPrimary = true)] public int Id { get; set; } public int Clicks { get; set; } @@ -31,6 +32,35 @@ var list = fsql.Select() > 不分组求聚合值,请使用 ToAggregate 替代 ToList +## 导航属性 + +假如 Topic 有导航属性 Category,Category 又有导航属性 Area,导航属性分组代码如下: + +```csharp +var list = fsql.Select() + .GroupBy(a => new { a.Clicks, a.Category }) + .ToList(a => new { a.Key.Category.Area.Name }); +``` + +如上这样编写,会报错无法解析 a.Key.Category.Area.Name,解决办法使用 Include: + +```csharp +var list = fsql.Select() + .Include(a => a.Category.Area) + //必须添加此行,否则只分组 Category 而不包含它的下级导航属性 Area + + .GroupBy(a => new { a.Clicks, a.Category }) + .ToList(a => new { a.Key.Category.Area.Name }); +``` + +但是,你还可以这样解决: + +```csharp +var list = fsql.Select() + .GroupBy(a => new { a.Clicks, a.Category, a.Category.Area }) + .ToList(a => new { a.Key.Area.Name }); +``` + ## API | 方法 | 返回值 | 参数 | 描述 |