- 增加 子查询函数 First、Count、Min、Max、Sum、Avg 的支持;

This commit is contained in:
28810
2019-07-09 16:46:11 +08:00
parent 272e55ecbf
commit 87c9ccf5c3
18 changed files with 558 additions and 205 deletions

View File

@ -336,6 +336,17 @@ namespace FreeSql.Tests.MySqlConnector
select.Where(a => 1 == 1).Count(out var count2);
Assert.Equal(count, count2);
Assert.Equal(0, select.Where(a => 1 == 2).Count());
var subquery = select.ToSql(a => new
{
all = a,
count = select.Where(b => b.Id > 0 && b.Id == a.Id).Count()
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Where(b => b.Id > 0 && b.Id == a.Id).Count()
});
}
[Fact]
public void Master()
@ -870,18 +881,58 @@ namespace FreeSql.Tests.MySqlConnector
[Fact]
public void Sum()
{
var subquery = select.ToSql(a => new
{
all = a,
count = select.Sum(b => b.Id)
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Sum(b => b.Id)
});
}
[Fact]
public void Min()
{
var subquery = select.ToSql(a => new
{
all = a,
count = select.Min(b => b.Id)
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Min(b => b.Id)
});
}
[Fact]
public void Max()
{
var subquery = select.ToSql(a => new
{
all = a,
count = select.Max(b => b.Id)
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Max(b => b.Id)
});
}
[Fact]
public void Avg()
{
var subquery = select.ToSql(a => new
{
all = a,
count = select.Avg(b => b.Id)
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Avg(b => b.Id)
});
}
[Fact]
public void As()

View File

@ -326,6 +326,17 @@ namespace FreeSql.Tests.MySql
select.Where(a => 1 == 1).Count(out var count2);
Assert.Equal(count, count2);
Assert.Equal(0, select.Where(a => 1 == 2).Count());
var subquery = select.ToSql(a => new
{
all = a,
count = select.Where(b => b.Id > 0 && b.Id == a.Id).Count()
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Where(b => b.Id > 0 && b.Id == a.Id).Count()
});
}
[Fact]
public void Master()
@ -860,18 +871,58 @@ namespace FreeSql.Tests.MySql
[Fact]
public void Sum()
{
var subquery = select.ToSql(a => new
{
all = a,
count = select.Sum(b => b.Id)
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Sum(b => b.Id)
});
}
[Fact]
public void Min()
{
var subquery = select.ToSql(a => new
{
all = a,
count = select.Min(b => b.Id)
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Min(b => b.Id)
});
}
[Fact]
public void Max()
{
var subquery = select.ToSql(a => new
{
all = a,
count = select.Max(b => b.Id)
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Max(b => b.Id)
});
}
[Fact]
public void Avg()
{
var subquery = select.ToSql(a => new
{
all = a,
count = select.Avg(b => b.Id)
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Avg(b => b.Id)
});
}
[Fact]
public void As()

View File

@ -212,6 +212,17 @@ namespace FreeSql.Tests.Oracle
select.Where(a => 1 == 1).Count(out var count2);
Assert.Equal(count, count2);
Assert.Equal(0, select.Where(a => 1 == 2).Count());
var subquery = select.ToSql(a => new
{
all = a,
count = select.Where(b => b.Id > 0 && b.Id == a.Id).Count()
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Where(b => b.Id > 0 && b.Id == a.Id).Count()
});
}
[Fact]
public void Master()
@ -744,18 +755,58 @@ namespace FreeSql.Tests.Oracle
[Fact]
public void Sum()
{
var subquery = select.ToSql(a => new
{
all = a,
count = select.Sum(b => b.Id)
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Sum(b => b.Id)
});
}
[Fact]
public void Min()
{
var subquery = select.ToSql(a => new
{
all = a,
count = select.Min(b => b.Id)
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Min(b => b.Id)
});
}
[Fact]
public void Max()
{
var subquery = select.ToSql(a => new
{
all = a,
count = select.Max(b => b.Id)
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Max(b => b.Id)
});
}
[Fact]
public void Avg()
{
var subquery = select.ToSql(a => new
{
all = a,
count = select.Avg(b => b.Id)
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Avg(b => b.Id)
});
}
[Fact]
public void As()

View File

@ -289,6 +289,17 @@ namespace FreeSql.Tests.PostgreSQL
select.Where(a => 1 == 1).Count(out var count2);
Assert.Equal(count, count2);
Assert.Equal(0, select.Where(a => 1 == 2).Count());
var subquery = select.ToSql(a => new
{
all = a,
count = select.Where(b => b.Id > 0 && b.Id == a.Id).Count()
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Where(b => b.Id > 0 && b.Id == a.Id).Count()
});
}
[Fact]
public void Master()
@ -818,18 +829,58 @@ namespace FreeSql.Tests.PostgreSQL
[Fact]
public void Sum()
{
var subquery = select.ToSql(a => new
{
all = a,
count = select.Sum(b => b.Id)
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Sum(b => b.Id)
});
}
[Fact]
public void Min()
{
var subquery = select.ToSql(a => new
{
all = a,
count = select.Min(b => b.Id)
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Min(b => b.Id)
});
}
[Fact]
public void Max()
{
var subquery = select.ToSql(a => new
{
all = a,
count = select.Max(b => b.Id)
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Max(b => b.Id)
});
}
[Fact]
public void Avg()
{
var subquery = select.ToSql(a => new
{
all = a,
count = select.Avg(b => b.Id)
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Avg(b => b.Id)
});
}
[Fact]
public void As()

View File

@ -213,6 +213,17 @@ namespace FreeSql.Tests.SqlServer
select.Where(a => 1 == 1).Count(out var count2);
Assert.Equal(count, count2);
Assert.Equal(0, select.Where(a => 1 == 2).Count());
var subquery = select.ToSql(a => new
{
all = a,
count = select.Where(b => b.Id > 0 && b.Id == a.Id).Count()
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Where(b => b.Id > 0 && b.Id == a.Id).Count()
});
}
[Fact]
public void Master()
@ -741,18 +752,58 @@ namespace FreeSql.Tests.SqlServer
[Fact]
public void Sum()
{
var subquery = select.ToSql(a => new
{
all = a,
count = select.Sum(b => b.Id)
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Sum(b => b.Id)
});
}
[Fact]
public void Min()
{
var subquery = select.ToSql(a => new
{
all = a,
count = select.Min(b => b.Id)
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Min(b => b.Id)
});
}
[Fact]
public void Max()
{
var subquery = select.ToSql(a => new
{
all = a,
count = select.Max(b => b.Id)
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Max(b => b.Id)
});
}
[Fact]
public void Avg()
{
var subquery = select.ToSql(a => new
{
all = a,
count = select.Avg(b => b.Id)
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Avg(b => b.Id)
});
}
[Fact]
public void As()

View File

@ -224,6 +224,17 @@ namespace FreeSql.Tests.Sqlite
select.Where(a => 1 == 1).Count(out var count2);
Assert.Equal(count, count2);
Assert.Equal(0, select.Where(a => 1 == 2).Count());
var subquery = select.ToSql(a => new
{
all = a,
count = select.Where(b => b.Id > 0 && b.Id == a.Id).Count()
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Where(b => b.Id > 0 && b.Id == a.Id).Count()
});
}
[Fact]
public void Master()
@ -691,18 +702,58 @@ namespace FreeSql.Tests.Sqlite
[Fact]
public void Sum()
{
var subquery = select.ToSql(a => new
{
all = a,
count = select.Sum(b => b.Id)
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Sum(b => b.Id)
});
}
[Fact]
public void Min()
{
var subquery = select.ToSql(a => new
{
all = a,
count = select.Min(b => b.Id)
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Min(b => b.Id)
});
}
[Fact]
public void Max()
{
var subquery = select.ToSql(a => new
{
all = a,
count = select.Max(b => b.Id)
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Max(b => b.Id)
});
}
[Fact]
public void Avg()
{
var subquery = select.ToSql(a => new
{
all = a,
count = select.Avg(b => b.Id)
});
var subqueryList = select.ToList(a => new
{
all = a,
count = select.Avg(b => b.Id)
});
}
[Fact]
public void As()

View File

@ -296,9 +296,24 @@ namespace FreeSql.Tests
[Fact]
public void Test1()
{
var teklksjdg = g.sqlite.Select<ZX.Model.CustomerCheckupGroup>()
.Where(a => true && a.CustomerMember.Group == "xxx")
.ToSql();
.ToSql(a => new
{
all = a,
subquery = g.sqlite.Select<ZX.Model.CustomerCheckupGroup>().Where(b => b.Id == a.Id).First(b => b.Group)
});
var teklksjdg333 = g.sqlite.Select<ZX.Model.CustomerCheckupGroup>()
.Where(a => true && a.CustomerMember.Group == "xxx")
.OrderBy(a => g.sqlite.Select<ZX.Model.CustomerCheckupGroup>().Where(b => b.Id == a.Id).First(b => b.Group))
.ToSql(a => new
{
all = a,
subquery = g.sqlite.Select<ZX.Model.CustomerCheckupGroup>().Where(b => b.Id == a.Id).First(b => b.Group)
});
var sklgjlskdg = g.sqlite.Select<ZX.Model.CustomerMember>()
.Where(a => a.CheckupGroups.AsSelect().Any())