- 增加 IEnumerable<TEntity> 扩展方法 AsSelect

This commit is contained in:
28810
2019-03-15 15:03:08 +08:00
parent fccc3fc8b9
commit 23d5d33bdd
8 changed files with 139 additions and 8 deletions

View File

@ -196,6 +196,22 @@ namespace FreeSql.Tests.MySql {
var count = select.Where(a => 1 == 1).Count();
Assert.False(select.Where(a => 1 == 2).Any());
Assert.Equal(count > 0, select.Where(a => 1 == 1).Any());
var sql2222 = select.Where(a =>
select.Where(b => b.Id == a.Id &&
select.Where(c => c.Id == b.Id).Where(d => d.Id == a.Id).Where(e => e.Id == b.Id)
.Offset(a.Id)
.Any()
).Any(c => c.Id == a.Id + 10)
);
var sql2222Tolist = sql2222.ToList();
var collectionSelect = select.Where(a =>
a.Type.Guid == a.TestTypeInfoGuid &&
a.Type.Parent.Id == a.Type.ParentId &&
a.Type.Parent.Types.AsSelect().Where(b => b.Name == a.Title).Any(b => b.ParentId == a.Type.Parent.Id)
);
collectionSelect.ToList();
}
[Fact]
public void Count() {

View File

@ -70,6 +70,22 @@ namespace FreeSql.Tests.Oracle {
var count = select.Where(a => 1 == 1).Count();
Assert.False(select.Where(a => 1 == 2).Any());
Assert.Equal(count > 0, select.Where(a => 1 == 1).Any());
var sql2222 = select.Where(a =>
select.Where(b => b.Id == a.Id &&
select.Where(c => c.Id == b.Id).Where(d => d.Id == a.Id).Where(e => e.Id == b.Id)
.Offset(a.Id)
.Any()
).Any(c => c.Id == a.Id + 10)
);
var sql2222Tolist = sql2222.ToList();
var collectionSelect = select.Where(a =>
a.Type.Guid == a.TestTypeInfoGuid &&
a.Type.Parent.Id == a.Type.ParentId &&
a.Type.Parent.Types.AsSelect().Where(b => b.Name == a.Title).Any(b => b.ParentId == a.Type.Parent.Id)
);
collectionSelect.ToList();
}
[Fact]
public void Count() {

View File

@ -138,6 +138,22 @@ namespace FreeSql.Tests.PostgreSQL {
var count = select.Where(a => 1 == 1).Count();
Assert.False(select.Where(a => 1 == 2).Any());
Assert.Equal(count > 0, select.Where(a => 1 == 1).Any());
var sql2222 = select.Where(a =>
select.Where(b => b.Id == a.Id &&
select.Where(c => c.Id == b.Id).Where(d => d.Id == a.Id).Where(e => e.Id == b.Id)
.Offset(a.Id)
.Any()
).Any(c => c.Id == a.Id + 10)
);
var sql2222Tolist = sql2222.ToList();
var collectionSelect = select.Where(a =>
a.Type.Guid == a.TestTypeInfoGuid &&
a.Type.Parent.Id == a.Type.ParentId &&
a.Type.Parent.Types.AsSelect().Where(b => b.Name == a.Title).Any(b => b.ParentId == a.Type.Parent.Id)
);
collectionSelect.ToList();
}
[Fact]
public void Count() {

View File

@ -71,6 +71,22 @@ namespace FreeSql.Tests.SqlServer {
var count = select.Where(a => 1 == 1).Count();
Assert.False(select.Where(a => 1 == 2).Any());
Assert.Equal(count > 0, select.Where(a => 1 == 1).Any());
var sql2222 = select.Where(a =>
select.Where(b => b.Id == a.Id &&
select.Where(c => c.Id == b.Id).Where(d => d.Id == a.Id).Where(e => e.Id == b.Id)
.Offset(a.Id)
.Any()
).Any(c => c.Id == a.Id + 10)
);
var sql2222Tolist = sql2222.ToList();
var collectionSelect = select.Where(a =>
a.Type.Guid == a.TestTypeInfoGuid &&
a.Type.Parent.Id == a.Type.ParentId &&
a.Type.Parent.Types.AsSelect().Where(b => b.Name == a.Title).Any(b => b.ParentId == a.Type.Parent.Id)
);
collectionSelect.ToList();
}
[Fact]
public void Count() {

View File

@ -102,6 +102,22 @@ namespace FreeSql.Tests.Sqlite {
var count = select.Where(a => 1 == 1).Count();
Assert.False(select.Where(a => 1 == 2).Any());
Assert.Equal(count > 0, select.Where(a => 1 == 1).Any());
var sql2222 = select.Where(a =>
select.Where(b => b.Id == a.Id &&
select.Where(c => c.Id == b.Id).Where(d => d.Id == a.Id).Where(e => e.Id == b.Id)
.Offset(a.Id)
.Any()
).Any(c => c.Id == a.Id + 10)
);
var sql2222Tolist = sql2222.ToList();
var collectionSelect = select.Where(a =>
a.Type.Guid == a.TestTypeInfoGuid &&
a.Type.Parent.Id == a.Type.ParentId &&
a.Type.Parent.Types.AsSelect().Where(b => b.Name == a.Title).Any(b => b.ParentId == a.Type.Parent.Id)
);
collectionSelect.ToList();
}
[Fact]
public void Count() {

View File

@ -27,15 +27,22 @@ namespace FreeSql.Tests {
public virtual Order Order { get; set; }
}
class NullAggreTestTable {
[Column(IsIdentity = true)]
public int Id { get; set; }
}
ISelect<TestInfo> select => g.mysql.Select<TestInfo>();
[Fact]
public void Test1() {
var collSelect1 = g.mysql.Select<Order>().Where(a =>
a.OrderDetails.AsSelect().Where(b => b.OrderId == a.OrderID).Any()
);
var collectionSelect = select.Where(a =>
a.Type.Guid == a.TypeGuid &&
a.Type.Parent.Id == a.Type.ParentId &&
a.Type.Parent.Types.AsSelect().Where(b => b.Name == a.Title).Any(b => b.ParentId == a.Type.Parent.Id)
);
var order = g.mysql.Select<Order>().Where(a => a.OrderID == 1).ToOne(); //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
var orderDetail1 = order.OrderDetails; //<2F><>һ<EFBFBD>η<EFBFBD><CEB7>ʣ<EFBFBD><CAA3><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD>ݿ<EFBFBD>
var orderDetail2 = order.OrderDetails; //<2F>ڶ<EFBFBD><DAB6>η<EFBFBD><CEB7>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD>
@ -182,6 +189,11 @@ namespace FreeSql.Tests {
}
}
class NullAggreTestTable {
[Column(IsIdentity = true)]
public int Id { get; set; }
}
[Table(Name = "xxx", SelectFilter = " a.id > 0")]
class TestInfo {