Updated 表达式函数 (markdown)

2881099
2019-12-08 08:55:23 +08:00
parent 8ea281f9d7
commit 1695781334

@@ -1,9 +1,11 @@
FreeSql 支持功能丰富的表达式函数解析,方便程序员在不了解数据库函数的情况下编写代码。这是 FreeSql 非常特色的功能之一,深入细化函数解析尽量做到满意,所支持的类型基本都可以使用对应的表达式函数,例如 日期、字符串、IN查询、数组PostgreSQL的数组、字典PostgreSQL HStore)等等。
这是 FreeSql 非常特色的功能之一,深入细化函数解析,所支持的类型基本都可以使用对应的表达式函数,例如 日期、字符串、IN查询、数组PostgreSQL的数组、字典PostgreSQL HStore)等等。
## In查询
```csharp
var t1 = fsql.Select<T>().Where(a => new[] { 1, 2, 3 }.Contains(a.Id)).ToSql();
var t1 = fsql.Select<T>()
.Where(a => new[] { 1, 2, 3 }
.Contains(a.Id)).ToSql();
//SELECT .. FROM ..
//WHERE (a.`Id` in (1,2,3))
```
@@ -17,12 +19,15 @@ var t1 = fsql.Select<T>().Where(a => new[] { 1, 2, 3 }.Contains(a.Id)).ToSql();
In 只能实现单列查询,多列怎么办?
```csharp
List<(Guid, DateTime)> tupleList = new List<(Guid, DateTime)>();
//元组集合
vae lst = new List<(Guid, DateTime)>();
tupleList.Add((Guid.NewGuid(), DateTime.Now));
tupleList.Add((Guid.NewGuid(), DateTime.Now));
tupleList.Add((Guid.NewGuid(), DateTime.Now));
var t2 = fsql.Select<T>().Where(a => contains2linqarr.ContainsMany(a.Id, a.ct1)).ToSql();
lst.Add((Guid.NewGuid(), DateTime.Now));
lst.Add((Guid.NewGuid(), DateTime.Now));
lst.Add((Guid.NewGuid(), DateTime.Now));
var t2 = fsql.Select<T>()
.Where(a => lst.ContainsMany(a.Id,a.ct1))
.ToSql();
//SELECT .. FROM ..
//WHERE (a."Id" = '685ee1f6-bdf6-4719-a291-c709b8a1378f' AND a."ct1" = '2019-12-07 23:55:27' OR
//a."Id" = '5ecd838a-06a0-4c81-be43-1e77633b7404' AND a."ct1" = '2019-12-07 23:55:27' OR