Add Queryable.Distinct()

This commit is contained in:
sunkaixuan
2019-02-04 13:36:28 +08:00
parent 09f204644a
commit 44aa946a09
6 changed files with 66 additions and 0 deletions

View File

@@ -395,6 +395,8 @@ namespace OrmTest.Demo
bool? b = false;
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 test11 = db.Queryable<Student>().Distinct().ToList();
var test12 = db.Queryable<Student>().Distinct().Select(it=>new Student{ Name=it.Name }).ToList();
}
public static void Page()
{

View File

@@ -573,6 +573,11 @@ namespace SqlSugar
return mergeQueryable.AS(tableName).Select<T>("*");
}
public ISugarQueryable<T> Distinct()
{
QueryBuilder.IsDistinct = true;
return this;
}
public virtual int Count()
{
InitMapping();
@@ -1588,6 +1593,7 @@ namespace SqlSugar
asyncQueryableBuilder.TableShortName = this.QueryBuilder.TableShortName;
asyncQueryableBuilder.TableWithString = this.QueryBuilder.TableWithString;
asyncQueryableBuilder.GroupByValue = this.QueryBuilder.GroupByValue;
asyncQueryableBuilder.IsDistinct = this.QueryBuilder.IsDistinct;
asyncQueryableBuilder.OrderByValue = this.QueryBuilder.OrderByValue;
asyncQueryableBuilder.IsDisabledGobalFilter = this.QueryBuilder.IsDisabledGobalFilter;
asyncQueryableBuilder.PartitionByValue = this.QueryBuilder.PartitionByValue;
@@ -1596,6 +1602,7 @@ namespace SqlSugar
asyncQueryableBuilder.HavingInfos = this.QueryBuilder.HavingInfos;
asyncQueryableBuilder.LambdaExpressions.ParameterIndex = this.QueryBuilder.LambdaExpressions.ParameterIndex;
}
#endregion
}
#endregion
@@ -1897,6 +1904,11 @@ namespace SqlSugar
this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last());
return result;
}
public new ISugarQueryable<T,T2> Distinct()
{
QueryBuilder.IsDistinct = true;
return this;
}
#endregion
}
#endregion
@@ -2261,6 +2273,11 @@ namespace SqlSugar
this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last());
return result;
}
public new ISugarQueryable<T, T2,T3> Distinct()
{
QueryBuilder.IsDistinct = true;
return this;
}
#endregion
}
#endregion
@@ -2683,6 +2700,11 @@ namespace SqlSugar
this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last());
return result;
}
public new ISugarQueryable<T, T2, T3,T4> Distinct()
{
QueryBuilder.IsDistinct = true;
return this;
}
#endregion
}
#endregion
@@ -3032,6 +3054,11 @@ namespace SqlSugar
this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last());
return result;
}
public new ISugarQueryable<T, T2, T3, T4,T5> Distinct()
{
QueryBuilder.IsDistinct = true;
return this;
}
#endregion
}
#endregion
@@ -3412,6 +3439,11 @@ namespace SqlSugar
this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last());
return result;
}
public new ISugarQueryable<T, T2, T3, T4, T5,T6> Distinct()
{
QueryBuilder.IsDistinct = true;
return this;
}
#endregion
}
#endregion
@@ -3823,6 +3855,11 @@ namespace SqlSugar
this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last());
return result;
}
public new ISugarQueryable<T, T2, T3, T4, T5, T6,T7> Distinct()
{
QueryBuilder.IsDistinct = true;
return this;
}
#endregion
}
#endregion
@@ -4267,6 +4304,11 @@ namespace SqlSugar
this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last());
return result;
}
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7,T8> Distinct()
{
QueryBuilder.IsDistinct = true;
return this;
}
#endregion
}
#endregion

View File

@@ -49,6 +49,7 @@ namespace SqlSugar
public string GroupByValue { get; set; }
public string PartitionByValue { get; set; }
public int WhereIndex { get; set; }
public bool IsDistinct { get; set; }
public int JoinIndex { get; set; }
public bool IsDisabledGobalFilter { get; set; }
public virtual List<SugarParameter> Parameters { get; set; }
@@ -363,6 +364,7 @@ namespace SqlSugar
this._TableNameString = null;
this.WhereInfos = null;
this.JoinQueryInfos = null;
this.IsDistinct = false;
}
public virtual bool IsComplexModel(string sql)
{
@@ -388,6 +390,10 @@ namespace SqlSugar
{
this.SelectCacheKey = this.SelectCacheKey + string.Join("-", this._JoinQueryInfos.Select(it => it.TableName));
}
if (IsDistinct)
{
result = " DISTINCT " + result;
}
return result;
}
}

View File

@@ -74,6 +74,7 @@ namespace SqlSugar
ISugarQueryable<T> Skip(int index);
ISugarQueryable<T> Take(int num);
ISugarQueryable<T> Distinct();
T Single();
Task<T> SingleAsync();
@@ -221,6 +222,7 @@ namespace SqlSugar
new ISugarQueryable<T, T2> With(string withString);
new ISugarQueryable<T, T2> WithCache(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);
#endregion
}
@@ -311,6 +313,7 @@ namespace SqlSugar
new ISugarQueryable<T, T2, T3> With(string withString);
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> Distinct();
bool Any(Expression<Func<T, T2,T3, bool>> expression);
#endregion
}
@@ -412,6 +415,7 @@ namespace SqlSugar
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> WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue);
new ISugarQueryable<T, T2, T3,T4> Distinct();
bool Any(Expression<Func<T, T2, T3,T4, bool>> expression);
#endregion
}
@@ -503,6 +507,7 @@ namespace SqlSugar
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> 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);
#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> 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> Distinct();
bool Any(Expression<Func<T, T2, T3, T4, T5,T6, bool>> expression);
#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> 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> Distinct();
bool Any(Expression<Func<T, T2, T3, T4, T5, T6,T7, bool>> expression);
#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> 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> Distinct();
bool Any(Expression<Func<T, T2, T3, T4, T5, T6, T7,T8, bool>> expression);
#endregion
}

View File

@@ -84,6 +84,10 @@ namespace SqlSugar
{
this.SelectCacheKey = this.SelectCacheKey + string.Join("-", this.JoinQueryInfos.Select(it => it.TableName));
}
if (IsDistinct)
{
result = " DISTINCT " + result;
}
return result;
}
}

View File

@@ -84,6 +84,10 @@ namespace SqlSugar
{
this.SelectCacheKey = this.SelectCacheKey + string.Join("-", this.JoinQueryInfos.Select(it => it.TableName));
}
if (IsDistinct)
{
reval = " DISTINCT " + reval;
}
return reval;
}
}