diff --git a/Src/Asp.NetCore2/SqlSeverTest/UnitTest/UnitSubToList.cs b/Src/Asp.NetCore2/SqlSeverTest/UnitTest/UnitSubToList.cs index 5383a088c..5a3d2663f 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/UnitTest/UnitSubToList.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/UnitTest/UnitSubToList.cs @@ -1,6 +1,8 @@ using SqlSugar; using System; +using System.Collections; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -51,17 +53,67 @@ namespace OrmTest { throw new Exception("unit error"); } - var test2= db.Queryable() + var test2 = db.Queryable() .Select(o => new myDTO5 - { + { disCount = SqlFunc.Subqueryable().Where(d => d.Id == o.CustomId).ToList() }, true) .ToList(); - if (test2.Any(z => z.disCount.Any(y => y.Id != z.CustomId))||test2.Any(z=>z.Id==0)) + if (test2.Any(z => z.disCount.Any(y => y.Id != z.CustomId)) || test2.Any(z => z.Id == 0)) { throw new Exception("unit error"); } + + var test3 = db.Queryable() + .Select(o => new myDTO5 + { + disCount = SqlFunc.Subqueryable().Where(d => d.Id == o.CustomId).ToList() + }, + true) + .MergeTable() + .ToList(); + + if (test3.First().disCount.Count == 0 || test3.Any(z => z.disCount.Any(y => y.Id != z.CustomId)) || test3.Any(z => z.Id == 0)) + { + throw new Exception("unit error"); + } + + var test4 = db.Queryable() + .LeftJoin((o, i) => o.Id == i.OrderId) + .LeftJoin((o, i, c) => c.Id == o.CustomId) + .Select((o, i, c) => new myDTO5 + { + OrderName = o.Name, + disCount = SqlFunc.Subqueryable().Where(d => d.Name == c.Name).ToList() + }, + true) + .ToList(); + + if (test4.First().OrderId == 0) + { + throw new Exception("unit error"); + } + var xxx = db.Queryable().ToList(); + db.CodeFirst.InitTables(); + db.DbMaintenance.TruncateTable(); + db.Insertable(new LibBookSubscription1() + { + BookIsbns = "a,b,c" + }).ExecuteCommand(); + db.Insertable(new LibBookSubscription1() + { + BookIsbns = "a,a,c" + }).ExecuteCommand(); + db.Insertable(new LibBook1() + { + ISBN = "b" + }).ExecuteCommand(); + int totalCount = 0; + var list51 = db.Queryable().ToList(); + var list5= db.Queryable() + .Select(st => new LibBookSubscription1() { Books = SqlFunc.Subqueryable().Where(x =>SqlFunc.SplitIn( st.BookIsbns,x.ISBN )).ToList() }, true) + .ToPageListAsync(1,2, totalCount).GetAwaiter().GetResult(); } private static void TestJoin3(SqlSugarClient db) { @@ -190,6 +242,16 @@ namespace OrmTest { throw new Exception("unit error"); } + + var test3 = db.Queryable() + .LeftJoin((o, c) => c.Id == o.CustomId) + .LeftJoin((o, c, i) => i.OrderId == o.Id) + .Select((o, c, i) => new + { + OrderName = o.Name, + disCount = SqlFunc.Subqueryable().OrderBy(d=>d.OrderId).Where(d => d.ItemId == i.ItemId).ToList() + }) + .ToList(); } private static void TestWhere(SqlSugarClient db) { @@ -251,6 +313,33 @@ namespace OrmTest throw new Exception("unit error"); } + var test5 = db.Queryable().Where(it=>false).Select(it => new + { + CustomId = it.CustomId, + OrderId = it.Id, + OrderName = it.Name, + disCount = SqlFunc.Subqueryable().Where(c => c.Id == it.CustomId).ToList() + }) + .ToListAsync().GetAwaiter().GetResult(); + + var test6 = db.Queryable().Where(it => false).Select(it => new + { + CustomId = it.CustomId, + OrderId = it.Id, + OrderName = it.Name, + disCount = SqlFunc.Subqueryable().Where(c => c.Id == it.CustomId).ToList() + }) + .ToList(); + + var test7 = db.Queryable().Select(it => new + { + CustomId = it.CustomId, + OrderId = it.Id, + OrderName = it.Name, + disCount = SqlFunc.Subqueryable().Where(c => c.Id == it.CustomId|| c.Id == it.CustomId).ToList() + }) + .ToList(); + } private static void TestGetAll(SqlSugarClient db) { @@ -317,7 +406,47 @@ namespace OrmTest public List disCount { get; set; } } } + [SugarTable("LibBookSubscription1xx")] + public class LibBookSubscription1 + { + /// + /// 主键 + /// + [SugarColumn(IsIdentity = true, IsPrimaryKey = true)] + public int Id { get; set; } + /// + /// 书籍isbn,逗号分割 + /// + + [SugarColumn(Length = 400)] + public string BookIsbns { get; set; } + + + /// + /// 书籍 + /// + [SugarColumn(IsIgnore = true)] + public List Books { get; set; } + + + } + public class LibBook1 + { + + /// + /// 主键 + /// + [SugarColumn(IsIdentity = true, IsPrimaryKey = true)] + public int Id { get; set; } + + /// + /// ISBN + /// + [SugarColumn(Length = 50)] + public string ISBN { get; set; } + + } internal class myDTO5 { public int CustomId { get; set; }