mirror of
https://github.com/dotnetcore/FreeSql.git
synced 2026-03-11 16:40:57 +08:00
update
62
表达式函数.md
62
表达式函数.md
@@ -22,7 +22,7 @@ if (xxx)
|
||||
## In查询
|
||||
|
||||
```csharp
|
||||
var t1 = fsql.Select<T>()
|
||||
fsql.Select<T>()
|
||||
.Where(a => new[] { 1, 2, 3 }.Contains(a.Id))
|
||||
.ToList();
|
||||
//SELECT .. FROM ..
|
||||
@@ -58,40 +58,38 @@ var t2 = fsql.Select<T>()
|
||||
## In子表
|
||||
|
||||
```csharp
|
||||
var list2 = fsql.Select<T>()
|
||||
.Where(a => fsql.Select<T>()
|
||||
.ToList(b => b.Id)
|
||||
.Contains(a.Id))
|
||||
fsql.Select<Topic>()
|
||||
.Where(a => fsql.Select<Topic>().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<T>()
|
||||
.Where(a => fsql.Select<T>()
|
||||
.Any(b => b.Id == a.Id))
|
||||
fsql.Select<Topic>()
|
||||
.Where(a => fsql.Select<Topic>().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<T>()
|
||||
fsql.Select<T>()
|
||||
.Where(a => a.CreateTime.Date == DateTime.Today)
|
||||
.ToList();
|
||||
//这行代码说明 FreeSql 表达式解析强大,不是所有 ORM 都支持
|
||||
|
||||
var t4 = fsql.Select<T>()
|
||||
fsql.Select<T>()
|
||||
.Where(a => a.CreateTime.Between(DateTime.Today, DateTime.Today.AddDays(1)))
|
||||
.ToList();
|
||||
//正常用法应该是这样
|
||||
@@ -102,7 +100,7 @@ var t4 = fsql.Select<T>()
|
||||
## 日期格式化
|
||||
|
||||
```csharp
|
||||
var t4 = fsql.Select<T>()
|
||||
fsql.Select<T>()
|
||||
.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<T1, T2>()
|
||||
|
||||
> v1.6.0 利用自定义解析功能,增加 SqlExt.Rank().Over().PartitionBy(...)、MySql group_concat 常用函数,欢迎 PR 补充
|
||||
|
||||
## 返回子查询字段
|
||||
|
||||
```csharp
|
||||
List<匿名类> t10 = fsql.Select<Topic>().ToList(a => new {
|
||||
a.Id,
|
||||
count = fsql.Select<T2>().Count(),
|
||||
max = fsql.Select<T2>().Max(b => b.Id),
|
||||
min = fsql.Select<T2>().Min(b => b.Id),
|
||||
name = fsql.Select<2>().First(b => b.name)
|
||||
});
|
||||
```
|
||||
|
||||
## 返回子查询集合
|
||||
|
||||
> v3.2.650+ 以下最多执行3次 SQL
|
||||
|
||||
```csharp
|
||||
List<匿名类> t11 = fsql.Select<Topic>().ToList(a => new {
|
||||
a.Id,
|
||||
list1 = fsql.Select<T2>().ToList(),
|
||||
list2 = fsql.Select<T2>().Where(b => b.TopicId == a.Id).ToList()
|
||||
});
|
||||
```
|
||||
|
||||
## 自定义解析
|
||||
|
||||
```csharp
|
||||
|
||||
2
返回数据.md
2
返回数据.md
@@ -61,7 +61,7 @@ List<匿名类> t10 = fsql.Select<Topic>().ToList(a => new {
|
||||
name = fsql.Select<2>().First(b => b.name)
|
||||
});
|
||||
|
||||
//返回子查询集合 v3.2.650+
|
||||
//返回子查询集合 v3.2.650+ 以下最多执行3次 SQL
|
||||
List<匿名类> t11 = fsql.Select<Topic>().ToList(a => new {
|
||||
a.Id,
|
||||
list1 = fsql.Select<T2>().ToList(),
|
||||
|
||||
Reference in New Issue
Block a user