mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-19 10:08:19 +08:00
Add Queryable.Distinct()
This commit is contained in:
@@ -395,6 +395,8 @@ namespace OrmTest.Demo
|
|||||||
bool? b = false;
|
bool? b = false;
|
||||||
var test9 = db.Queryable<DataTestInfo2>().Where(it => it.Bool1 == b).ToList();
|
var test9 = db.Queryable<DataTestInfo2>().Where(it => it.Bool1 == b).ToList();
|
||||||
var test10 = db.Queryable<Student>(db.Queryable<Student>().Select(it => new Student() { Name = it.Name.Substring(0, 1) })).GroupBy(it => it.Name).ToList(); ;
|
var test10 = db.Queryable<Student>(db.Queryable<Student>().Select(it => new Student() { Name = it.Name.Substring(0, 1) })).GroupBy(it => it.Name).ToList(); ;
|
||||||
|
var test11 = db.Queryable<Student>().Distinct().ToList();
|
||||||
|
var test12 = db.Queryable<Student>().Distinct().Select(it=>new Student{ Name=it.Name }).ToList();
|
||||||
}
|
}
|
||||||
public static void Page()
|
public static void Page()
|
||||||
{
|
{
|
||||||
|
@@ -573,6 +573,11 @@ namespace SqlSugar
|
|||||||
return mergeQueryable.AS(tableName).Select<T>("*");
|
return mergeQueryable.AS(tableName).Select<T>("*");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ISugarQueryable<T> Distinct()
|
||||||
|
{
|
||||||
|
QueryBuilder.IsDistinct = true;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
public virtual int Count()
|
public virtual int Count()
|
||||||
{
|
{
|
||||||
InitMapping();
|
InitMapping();
|
||||||
@@ -1588,6 +1593,7 @@ namespace SqlSugar
|
|||||||
asyncQueryableBuilder.TableShortName = this.QueryBuilder.TableShortName;
|
asyncQueryableBuilder.TableShortName = this.QueryBuilder.TableShortName;
|
||||||
asyncQueryableBuilder.TableWithString = this.QueryBuilder.TableWithString;
|
asyncQueryableBuilder.TableWithString = this.QueryBuilder.TableWithString;
|
||||||
asyncQueryableBuilder.GroupByValue = this.QueryBuilder.GroupByValue;
|
asyncQueryableBuilder.GroupByValue = this.QueryBuilder.GroupByValue;
|
||||||
|
asyncQueryableBuilder.IsDistinct = this.QueryBuilder.IsDistinct;
|
||||||
asyncQueryableBuilder.OrderByValue = this.QueryBuilder.OrderByValue;
|
asyncQueryableBuilder.OrderByValue = this.QueryBuilder.OrderByValue;
|
||||||
asyncQueryableBuilder.IsDisabledGobalFilter = this.QueryBuilder.IsDisabledGobalFilter;
|
asyncQueryableBuilder.IsDisabledGobalFilter = this.QueryBuilder.IsDisabledGobalFilter;
|
||||||
asyncQueryableBuilder.PartitionByValue = this.QueryBuilder.PartitionByValue;
|
asyncQueryableBuilder.PartitionByValue = this.QueryBuilder.PartitionByValue;
|
||||||
@@ -1596,6 +1602,7 @@ namespace SqlSugar
|
|||||||
asyncQueryableBuilder.HavingInfos = this.QueryBuilder.HavingInfos;
|
asyncQueryableBuilder.HavingInfos = this.QueryBuilder.HavingInfos;
|
||||||
asyncQueryableBuilder.LambdaExpressions.ParameterIndex = this.QueryBuilder.LambdaExpressions.ParameterIndex;
|
asyncQueryableBuilder.LambdaExpressions.ParameterIndex = this.QueryBuilder.LambdaExpressions.ParameterIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
@@ -1897,6 +1904,11 @@ namespace SqlSugar
|
|||||||
this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last());
|
this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last());
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
public new ISugarQueryable<T,T2> Distinct()
|
||||||
|
{
|
||||||
|
QueryBuilder.IsDistinct = true;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
@@ -2261,6 +2273,11 @@ namespace SqlSugar
|
|||||||
this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last());
|
this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last());
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
public new ISugarQueryable<T, T2,T3> Distinct()
|
||||||
|
{
|
||||||
|
QueryBuilder.IsDistinct = true;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
@@ -2683,6 +2700,11 @@ namespace SqlSugar
|
|||||||
this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last());
|
this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last());
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
public new ISugarQueryable<T, T2, T3,T4> Distinct()
|
||||||
|
{
|
||||||
|
QueryBuilder.IsDistinct = true;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
@@ -3032,6 +3054,11 @@ namespace SqlSugar
|
|||||||
this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last());
|
this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last());
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
public new ISugarQueryable<T, T2, T3, T4,T5> Distinct()
|
||||||
|
{
|
||||||
|
QueryBuilder.IsDistinct = true;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
@@ -3412,6 +3439,11 @@ namespace SqlSugar
|
|||||||
this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last());
|
this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last());
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
public new ISugarQueryable<T, T2, T3, T4, T5,T6> Distinct()
|
||||||
|
{
|
||||||
|
QueryBuilder.IsDistinct = true;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
@@ -3823,6 +3855,11 @@ namespace SqlSugar
|
|||||||
this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last());
|
this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last());
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
public new ISugarQueryable<T, T2, T3, T4, T5, T6,T7> Distinct()
|
||||||
|
{
|
||||||
|
QueryBuilder.IsDistinct = true;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
@@ -4267,6 +4304,11 @@ namespace SqlSugar
|
|||||||
this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last());
|
this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last());
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7,T8> Distinct()
|
||||||
|
{
|
||||||
|
QueryBuilder.IsDistinct = true;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
@@ -49,6 +49,7 @@ namespace SqlSugar
|
|||||||
public string GroupByValue { get; set; }
|
public string GroupByValue { get; set; }
|
||||||
public string PartitionByValue { get; set; }
|
public string PartitionByValue { get; set; }
|
||||||
public int WhereIndex { get; set; }
|
public int WhereIndex { get; set; }
|
||||||
|
public bool IsDistinct { get; set; }
|
||||||
public int JoinIndex { get; set; }
|
public int JoinIndex { get; set; }
|
||||||
public bool IsDisabledGobalFilter { get; set; }
|
public bool IsDisabledGobalFilter { get; set; }
|
||||||
public virtual List<SugarParameter> Parameters { get; set; }
|
public virtual List<SugarParameter> Parameters { get; set; }
|
||||||
@@ -363,6 +364,7 @@ namespace SqlSugar
|
|||||||
this._TableNameString = null;
|
this._TableNameString = null;
|
||||||
this.WhereInfos = null;
|
this.WhereInfos = null;
|
||||||
this.JoinQueryInfos = null;
|
this.JoinQueryInfos = null;
|
||||||
|
this.IsDistinct = false;
|
||||||
}
|
}
|
||||||
public virtual bool IsComplexModel(string sql)
|
public virtual bool IsComplexModel(string sql)
|
||||||
{
|
{
|
||||||
@@ -388,6 +390,10 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
this.SelectCacheKey = this.SelectCacheKey + string.Join("-", this._JoinQueryInfos.Select(it => it.TableName));
|
this.SelectCacheKey = this.SelectCacheKey + string.Join("-", this._JoinQueryInfos.Select(it => it.TableName));
|
||||||
}
|
}
|
||||||
|
if (IsDistinct)
|
||||||
|
{
|
||||||
|
result = " DISTINCT " + result;
|
||||||
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -74,6 +74,7 @@ namespace SqlSugar
|
|||||||
|
|
||||||
ISugarQueryable<T> Skip(int index);
|
ISugarQueryable<T> Skip(int index);
|
||||||
ISugarQueryable<T> Take(int num);
|
ISugarQueryable<T> Take(int num);
|
||||||
|
ISugarQueryable<T> Distinct();
|
||||||
|
|
||||||
T Single();
|
T Single();
|
||||||
Task<T> SingleAsync();
|
Task<T> SingleAsync();
|
||||||
@@ -221,6 +222,7 @@ namespace SqlSugar
|
|||||||
new ISugarQueryable<T, T2> With(string withString);
|
new ISugarQueryable<T, T2> With(string withString);
|
||||||
new ISugarQueryable<T, T2> WithCache(int cacheDurationInSeconds = int.MaxValue);
|
new ISugarQueryable<T, T2> WithCache(int cacheDurationInSeconds = int.MaxValue);
|
||||||
new ISugarQueryable<T, T2> WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue);
|
new ISugarQueryable<T, T2> WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue);
|
||||||
|
new ISugarQueryable<T,T2> Distinct();
|
||||||
bool Any(Expression<Func<T,T2, bool>> expression);
|
bool Any(Expression<Func<T,T2, bool>> expression);
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
@@ -311,6 +313,7 @@ namespace SqlSugar
|
|||||||
new ISugarQueryable<T, T2, T3> With(string withString);
|
new ISugarQueryable<T, T2, T3> With(string withString);
|
||||||
new ISugarQueryable<T, T2, T3> WithCache(int cacheDurationInSeconds = int.MaxValue);
|
new ISugarQueryable<T, T2, T3> WithCache(int cacheDurationInSeconds = int.MaxValue);
|
||||||
new ISugarQueryable<T, T2, T3> WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue);
|
new ISugarQueryable<T, T2, T3> WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue);
|
||||||
|
new ISugarQueryable<T, T2,T3> Distinct();
|
||||||
bool Any(Expression<Func<T, T2,T3, bool>> expression);
|
bool Any(Expression<Func<T, T2,T3, bool>> expression);
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
@@ -412,6 +415,7 @@ namespace SqlSugar
|
|||||||
new ISugarQueryable<T, T2, T3, T4> With(string withString);
|
new ISugarQueryable<T, T2, T3, T4> With(string withString);
|
||||||
new ISugarQueryable<T, T2, T3, T4> WithCache(int cacheDurationInSeconds = int.MaxValue);
|
new ISugarQueryable<T, T2, T3, T4> WithCache(int cacheDurationInSeconds = int.MaxValue);
|
||||||
new ISugarQueryable<T, T2, T3, T4> WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue);
|
new ISugarQueryable<T, T2, T3, T4> WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue);
|
||||||
|
new ISugarQueryable<T, T2, T3,T4> Distinct();
|
||||||
bool Any(Expression<Func<T, T2, T3,T4, bool>> expression);
|
bool Any(Expression<Func<T, T2, T3,T4, bool>> expression);
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
@@ -503,6 +507,7 @@ namespace SqlSugar
|
|||||||
new ISugarQueryable<T, T2, T3, T4, T5> With(string withString);
|
new ISugarQueryable<T, T2, T3, T4, T5> With(string withString);
|
||||||
new ISugarQueryable<T, T2, T3, T4, T5> WithCache(int cacheDurationInSeconds = int.MaxValue);
|
new ISugarQueryable<T, T2, T3, T4, T5> WithCache(int cacheDurationInSeconds = int.MaxValue);
|
||||||
new ISugarQueryable<T, T2, T3, T4, T5> WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue);
|
new ISugarQueryable<T, T2, T3, T4, T5> WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue);
|
||||||
|
new ISugarQueryable<T, T2, T3, T4,T5> Distinct();
|
||||||
bool Any(Expression<Func<T, T2, T3, T4,T5, bool>> expression);
|
bool Any(Expression<Func<T, T2, T3, T4,T5, bool>> expression);
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
@@ -600,6 +605,7 @@ namespace SqlSugar
|
|||||||
new ISugarQueryable<T, T2, T3, T4, T5, T6> With(string withString);
|
new ISugarQueryable<T, T2, T3, T4, T5, T6> With(string withString);
|
||||||
new ISugarQueryable<T, T2, T3, T4, T5, T6> WithCache(int cacheDurationInSeconds = int.MaxValue);
|
new ISugarQueryable<T, T2, T3, T4, T5, T6> WithCache(int cacheDurationInSeconds = int.MaxValue);
|
||||||
new ISugarQueryable<T, T2, T3, T4, T5, T6> WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue);
|
new ISugarQueryable<T, T2, T3, T4, T5, T6> WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue);
|
||||||
|
new ISugarQueryable<T, T2, T3, T4, T5,T6> Distinct();
|
||||||
bool Any(Expression<Func<T, T2, T3, T4, T5,T6, bool>> expression);
|
bool Any(Expression<Func<T, T2, T3, T4, T5,T6, bool>> expression);
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
@@ -703,6 +709,7 @@ namespace SqlSugar
|
|||||||
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> With(string withString);
|
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> With(string withString);
|
||||||
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> WithCache(int cacheDurationInSeconds = int.MaxValue);
|
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> WithCache(int cacheDurationInSeconds = int.MaxValue);
|
||||||
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue);
|
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue);
|
||||||
|
new ISugarQueryable<T, T2, T3, T4, T5, T6,T7> Distinct();
|
||||||
bool Any(Expression<Func<T, T2, T3, T4, T5, T6,T7, bool>> expression);
|
bool Any(Expression<Func<T, T2, T3, T4, T5, T6,T7, bool>> expression);
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
@@ -812,6 +819,7 @@ namespace SqlSugar
|
|||||||
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> With(string withString);
|
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> With(string withString);
|
||||||
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> WithCache(int cacheDurationInSeconds = int.MaxValue);
|
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> WithCache(int cacheDurationInSeconds = int.MaxValue);
|
||||||
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue);
|
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue);
|
||||||
|
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7,T8> Distinct();
|
||||||
bool Any(Expression<Func<T, T2, T3, T4, T5, T6, T7,T8, bool>> expression);
|
bool Any(Expression<Func<T, T2, T3, T4, T5, T6, T7,T8, bool>> expression);
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
@@ -84,6 +84,10 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
this.SelectCacheKey = this.SelectCacheKey + string.Join("-", this.JoinQueryInfos.Select(it => it.TableName));
|
this.SelectCacheKey = this.SelectCacheKey + string.Join("-", this.JoinQueryInfos.Select(it => it.TableName));
|
||||||
}
|
}
|
||||||
|
if (IsDistinct)
|
||||||
|
{
|
||||||
|
result = " DISTINCT " + result;
|
||||||
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -84,6 +84,10 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
this.SelectCacheKey = this.SelectCacheKey + string.Join("-", this.JoinQueryInfos.Select(it => it.TableName));
|
this.SelectCacheKey = this.SelectCacheKey + string.Join("-", this.JoinQueryInfos.Select(it => it.TableName));
|
||||||
}
|
}
|
||||||
|
if (IsDistinct)
|
||||||
|
{
|
||||||
|
reval = " DISTINCT " + reval;
|
||||||
|
}
|
||||||
return reval;
|
return reval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user