# Select
Sqless 支持以下几种 Select:
功能 | 说明 | 用法 |
---|---|---|
Select 特定列表 | 使用泛型,获取列表 | Select<T>(SqlessSelectRequest) |
Select 普通列表 | 使用 dynamic | Select(SqlessSelectRequest) |
SelectFirst | 选择第一条,使用泛型,如果未找到就报错 | SelectFirst<T>(SqlessSelectRequest) |
SelectFirstOrDefault | 选择第一条,使用泛型,如果未找到返回默认值 | SelectFirst<T>(SqlessSelectRequest) |
后续Select
示例中,sqless
对象为
var sqlConStr = "Data Source=127.0.0.1;Initial Catalog=StoreTest;User ID=sa;Password=123";
var sqlessConfig = SqlessConfig.GetAllowUnspecifiedConfig(sqlConStr);
using Sqless sqless = new Sqless(sqlessConfig);
1
2
3
2
3
# SqlessRequest
Select 使用SqlessRequest
的派生类SqlessSelectRequest
- Orders 属性: 排序,可设置多个排序条件
- Fields 属性: 查询字段,可利用
LoadFromType
函数快速设置 - Joins 属性: 表连接,可连接多个表
- PageIndex 属性: 分页查询起始页,0 基
- PageSize 属性: 分页查询每页数量
- LoadFromType 函数: 将类型的字段添加到 Fields 列表中
# Select 特定列表
# 示例
var request = new SqlessSelectRequest()
{
Table = Tables.Product
};
request.LoadFromType(typeof(Product));
List<Product> products = await sqless.Select<Product>(request);
1
2
3
4
5
6
2
3
4
5
6
# Select 普通列表
与 Select 特定列表 类似
# 示例
var request = new SqlessSelectRequest()
{
Table = Tables.Product
};
request.LoadFromType(typeof(Product));
List<dynamic> products = await sqless.Select(request);
1
2
3
4
5
6
2
3
4
5
6
# SelectFirst
# 示例
var account = "123456";
var request = new SqlessSelectRequest
{
Table = "User"
};
request.Fields.Add(new Query.SqlessField() { Field = "Uid" });
request.Queries.Add(new Query.SqlessQuery()
{
Field = "Account",
Type = Query.SqlessQueryType.Equal,
Value = account
});
string uid = await sqless.SelectFirst<string>(request);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# SelectFirstOrDefault
与SelectFirst
用法相同,至是如果未找到会返回默认值
# 示例
string uid = await sqless.SelectFirstOrDefault<string>(request);
1
# 分页查询
TIP
至少存在一个 Orders,分页查询才生效。
# 示例
查询结果为第 2 页(PageIndex
是 0 基的), 2 条数据。即查询结果为第三条和第四条数据。
var request=new SqlessSelectRequest()
{
Table = Tables.User,
PageSize = 2,
PageIndex = 1,
Orders = new List<SqlessOrder>()
{
new SqlessOrder() { Field="Uid" }
},
Fields = new List<SqlessField>()
{
new SqlessField() { Field="Uid" },
new SqlessField() { Field="Name" }
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Join
Sqless 支持以下几种 Join:
- LeftJoin:与 SQL 中的 LEFT JOIN 对应
- RightJoin:与 SQL 中的 RIGHT JOIN 对应
- InnerJoin:与 SQL 中的 INNER JOIN 对应
- FullJoin:与 SQL 中的 FULL JOIN 对应
TIP
连接查询时,如果两个表中的字段名相同,只能取其中一个字段
# 示例
User
表左连接Order
表,查询条件为 Phone 字段不为空,查询结果取User
表的Name
、Order
表的Time
2 个字段。
var request = new SqlessSelectRequest()
{
Table = Tables.User,
Queries = new List<SqlessQuery>()
{
new SqlessQuery()
{
Field="Phone",
Table="User",
Type=SqlessQueryType.NotNull
}
},
Fields = new List<SqlessField>()
{
new SqlessField() { Table=Tables.User, Field="Name" },
new SqlessField() { Table=Tables.Order, Field="Time" }
},
Joins = new List<SqlessJoin>()
{
new SqlessJoin()
{
LeftTable=Tables.User,
LeftField="Uid",
RightTable=Tables.Order,
RightField="Uid"
}
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28