Skip to content

查询

GetSingle* 适合“应该只有一条”的场景;GetFirst* 适合只关心第一条记录的场景。它们都提供 Async 版本。

按 ID 查询

csharp
var entityId = 1;
var entity = Db.Query<EntityClass>(entityId).GetSingleOrDefault();
csharp
var entityId = 1;
var entity = await Db.Query<EntityClass>(entityId).GetSingleOrDefaultAsync();

取第一条记录

csharp
var firstEntity = Db.Query<EntityClass>()
    .OrderBy(i => i.Id)
    .GetFirstOrDefault();
csharp
var firstEntity = await Db.Query<EntityClass>()
    .OrderBy(i => i.Id)
    .GetFirstOrDefaultAsync();

查询所有

csharp
var entities = Db.Query<EntityClass>().GetList();
csharp
var entities = await Db.Query<EntityClass>().GetListAsync();

分页查询

csharp
var pagedResult = Db.QueryPaged<EntityClass>(1, 1)
    .OrderBy(i => i.Id)
    .GetPagedResult();
csharp
var pagedResult = await Db.QueryPaged<EntityClass>(1, 1)
    .OrderBy(i => i.Id)
    .GetPagedResultAsync();

查询计数

csharp
int count = Db.QueryCount<EntityClass>().GetSingle<int>();
csharp
int count = await Db.QueryCount<EntityClass>().GetSingleAsync<int>();

判断是否存在

csharp
var entityId = 1;
bool exists = Db.QueryExists<EntityClass>(entityId).Get();
csharp
var entityId = 1;
bool exists = await Db.QueryExists<EntityClass>(entityId).GetAsync();

带 where 条件的查询

csharp
string name = "Tom";
var entities = Db.Query<EntityClass>()
    .WhereEq(i => i.Name, name)
    .WhereLt(i => i.Age, 18)
    .GetList();

查询指定属性

csharp
var entities = Db.Query<EntityClass>()
    .Select(i => i.Id)
    .Select(i => i.Name)
    .GetList();

从指定表查询

csharp
string table = "entity_table";
var entities = Db.Query<EntityClass>()
    .From(table)
    .GetList();

带 or 条件的查询

csharp
var firstId = 1;
var lastId = 2;
var filter = SqlBuilder<EntityClass>.Filter;

var results = await Db.Query<EntityClass>()
    .WhereOr(filter.Eq(i => i.Id, firstId), filter.Eq(i => i.Id, lastId))
    .OrderBy(i => i.Id)
    .GetListAsync();

直接取原始列表

csharp
var results = Db.Query<EntityClass>()
    .WhereRaw("[IsDeleted] = {0}", false)
    .GetList();