# 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

# 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

# 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

# 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

# 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

# Join

Sqless 支持以下几种 Join:

  1. LeftJoin:与 SQL 中的 LEFT JOIN 对应
  2. RightJoin:与 SQL 中的 RIGHT JOIN 对应
  3. InnerJoin:与 SQL 中的 INNER JOIN 对应
  4. FullJoin:与 SQL 中的 FULL JOIN 对应

TIP

连接查询时,如果两个表中的字段名相同,只能取其中一个字段

# 示例

User表左连接Order表,查询条件为 Phone 字段不为空,查询结果取User表的NameOrder表的Time2 个字段。

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
Last Updated: 12/10/2020, 10:26:39 PM