From 0c83b981d9f3b509a1abf51ba97abe99b0de7865 Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Mon, 23 May 2022 12:10:45 +0800 Subject: [PATCH] update --- 表达式函数.md | 62 ++++++++++++++++++++++++++++++++++----------------- 返回数据.md | 2 +- 2 files changed, 43 insertions(+), 21 deletions(-) diff --git a/表达式函数.md b/表达式函数.md index c88fc34..2ae4133 100644 --- a/表达式函数.md +++ b/表达式函数.md @@ -22,7 +22,7 @@ if (xxx) ## In查询 ```csharp -var t1 = fsql.Select() +fsql.Select() .Where(a => new[] { 1, 2, 3 }.Contains(a.Id)) .ToList(); //SELECT .. FROM .. @@ -58,40 +58,38 @@ var t2 = fsql.Select() ## In子表 ```csharp -var list2 = fsql.Select() - .Where(a => fsql.Select() - .ToList(b => b.Id) - .Contains(a.Id)) +fsql.Select() + .Where(a => fsql.Select().As("b").ToList(b => b.Id).Contains(a.Id)) .ToList(); -// SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` -// FROM `tb_topic` a -// WHERE (((cast(a.`Id` as char)) in (SELECT b.`Title` -// FROM `tb_topic` b))) +//SELECT a.`Id`, a.`Title`, a.`Clicks`, a.`CreateTime`, a.`CategoryId` +//FROM `Topic` a +//WHERE (((a.`Id`) in (SELECT b.`Id` +// FROM `Topic` b))) ``` ## Exists子表 ```csharp -var list2 = fsql.Select() - .Where(a => fsql.Select() - .Any(b => b.Id == a.Id)) +fsql.Select() + .Where(a => fsql.Select().As("b").Where(b => b.Id == a.Id).Any()) .ToList(); -// SELECT a.`Id`, a.`TypeGuid`, a.`Title`, a.`CreateTime` -// FROM `xxx` a -// WHERE (exists(SELECT 1 -// FROM `xxx` b -// WHERE (b.`Id` = a.`Id`))) +//SELECT a.`Id`, a.`Title`, a.`Clicks`, a.`CreateTime`, a.`CategoryId` +//FROM `Topic` a +//WHERE (exists(SELECT 1 +// FROM `Topic` b +// WHERE (b.`Id` = a.`Id`) +// limit 0,1)) ``` ## 查找今天创建的数据 ```csharp -var t3 = fsql.Select() +fsql.Select() .Where(a => a.CreateTime.Date == DateTime.Today) .ToList(); //这行代码说明 FreeSql 表达式解析强大,不是所有 ORM 都支持 -var t4 = fsql.Select() +fsql.Select() .Where(a => a.CreateTime.Between(DateTime.Today, DateTime.Today.AddDays(1))) .ToList(); //正常用法应该是这样 @@ -102,7 +100,7 @@ var t4 = fsql.Select() ## 日期格式化 ```csharp -var t4 = fsql.Select() +fsql.Select() .First(a => a.CreateTime.ToString("HH:mm:ss"); // SELECT date_format(a.`CreateTime`, '%H:%i:%s') as1 // FROM `xxx` a @@ -128,6 +126,30 @@ fsql.Select() > v1.6.0 利用自定义解析功能,增加 SqlExt.Rank().Over().PartitionBy(...)、MySql group_concat 常用函数,欢迎 PR 补充 +## 返回子查询字段 + +```csharp +List<匿名类> t10 = fsql.Select().ToList(a => new { + a.Id, + count = fsql.Select().Count(), + max = fsql.Select().Max(b => b.Id), + min = fsql.Select().Min(b => b.Id), + name = fsql.Select<2>().First(b => b.name) +}); +``` + +## 返回子查询集合 + +> v3.2.650+ 以下最多执行3次 SQL + +```csharp +List<匿名类> t11 = fsql.Select().ToList(a => new { + a.Id, + list1 = fsql.Select().ToList(), + list2 = fsql.Select().Where(b => b.TopicId == a.Id).ToList() +}); +``` + ## 自定义解析 ```csharp diff --git a/返回数据.md b/返回数据.md index a4261df..28f7243 100644 --- a/返回数据.md +++ b/返回数据.md @@ -61,7 +61,7 @@ List<匿名类> t10 = fsql.Select().ToList(a => new { name = fsql.Select<2>().First(b => b.name) }); -//返回子查询集合 v3.2.650+ +//返回子查询集合 v3.2.650+ 以下最多执行3次 SQL List<匿名类> t11 = fsql.Select().ToList(a => new { a.Id, list1 = fsql.Select().ToList(),