diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml index 310ff7ed..be8774fe 100644 --- a/FreeSql/FreeSql.xml +++ b/FreeSql/FreeSql.xml @@ -1032,6 +1032,13 @@ 选择列 + + + 执行SQL查询,返回 TDto 映射的字段,记录不存在时返回 Dto 默认值 + + + + 执行SQL查询,返回指定字段的记录的第一条记录,记录不存在时返回 TReturn 默认值 @@ -1040,6 +1047,13 @@ 选择列 + + + 执行SQL查询,返回 TDto 映射的字段,记录不存在时返回 Dto 默认值 + + + + 返回即将执行的SQL语句 diff --git a/FreeSql/Interface/Curd/ISelect/ISelect1.cs b/FreeSql/Interface/Curd/ISelect/ISelect1.cs index aee69f3a..0ec2e749 100644 --- a/FreeSql/Interface/Curd/ISelect/ISelect1.cs +++ b/FreeSql/Interface/Curd/ISelect/ISelect1.cs @@ -48,6 +48,13 @@ namespace FreeSql /// TReturn ToOne(Expression> select); Task ToOneAsync(Expression> select); + /// + /// 执行SQL查询,返回 TDto 映射的字段,记录不存在时返回 Dto 默认值 + /// + /// + /// + TDto ToOne(); + Task ToOneAsync(); /// /// 执行SQL查询,返回指定字段的记录的第一条记录,记录不存在时返回 TReturn 默认值 @@ -57,6 +64,13 @@ namespace FreeSql /// TReturn First(Expression> select); Task FirstAsync(Expression> select); + /// + /// 执行SQL查询,返回 TDto 映射的字段,记录不存在时返回 Dto 默认值 + /// + /// + /// + TDto First(); + Task FirstAsync(); /// /// 返回即将执行的SQL语句 diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select1Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select1Provider.cs index e0a1a421..5f82840d 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select1Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select1Provider.cs @@ -372,16 +372,17 @@ namespace FreeSql.Internal.CommonProvider } public bool Any(Expression> exp) => this.Where(exp).Any(); - public Task AnyAsync(Expression> exp) => this.Where(exp).AnyAsync(); public TReturn ToOne(Expression> select) => this.Limit(1).ToList(select).FirstOrDefault(); - async public Task ToOneAsync(Expression> select) => (await this.Limit(1).ToListAsync(select)).FirstOrDefault(); + public TDto ToOne() => this.Limit(1).ToList().FirstOrDefault(); + async public Task ToOneAsync() => (await this.Limit(1).ToListAsync()).FirstOrDefault(); public TReturn First(Expression> select) => this.ToOne(select); - public Task FirstAsync(Expression> select) => this.ToOneAsync(select); + public TDto First() => this.ToOne(); + public Task FirstAsync() => this.ToOneAsync(); public ISelect Include(Expression> navigateSelector) where TNavigate : class {