Query_Select_Test.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. using System.Data;
  2. using Microsoft.VisualStudio.TestTools.UnitTesting;
  3. namespace Vitorm.MsTest.CommonTest
  4. {
  5. [TestClass]
  6. public class Query_Select_Test
  7. {
  8. [TestMethod]
  9. public void Test_Select()
  10. {
  11. using var dbContext = DataSource.CreateDbContext();
  12. var userQuery = dbContext.Query<User>();
  13. //
  14. {
  15. var userList = userQuery.ToList();
  16. }
  17. // userQuery.Select(user => user)
  18. {
  19. var rows = userQuery.Select(user => user).ToList();
  20. Assert.AreEqual(6, rows.Count);
  21. }
  22. // userQuery.Select(user => user.id);
  23. {
  24. var rows = userQuery.Select(user => user.id).ToList();
  25. }
  26. {
  27. var rows = userQuery.Select(user => user.id + 100).ToList();
  28. }
  29. {
  30. var rows = userQuery.Select(user => 1000 + user.id + 100).ToList();
  31. }
  32. {
  33. var rows = userQuery.Select(user => (double)user.id).ToList();
  34. }
  35. {
  36. var rows = userQuery.Select(user => (double)user.id + 0.1).ToList();
  37. }
  38. {
  39. var rows = userQuery.Select(user => user.id + 0.1).ToList();
  40. }
  41. {
  42. var query =
  43. from user in userQuery
  44. where user.id > 1
  45. orderby user.id
  46. select new
  47. {
  48. id = user.id,
  49. user = user,
  50. ext = new
  51. {
  52. father = user,
  53. fid = user.fatherId
  54. },
  55. trueValue = true,
  56. };
  57. var sql = query.ToExecuteString();
  58. var rows = query.ToList();
  59. }
  60. // String.Format(format: "{0}_{1}_{2}", "0", "1", "2")
  61. {
  62. var query =
  63. from user in userQuery
  64. orderby user.id
  65. select new
  66. {
  67. uniqueId1 = user.id + "_" + user.fatherId + "_" + user.motherId,
  68. uniqueId2 = $"{user.id}_{user.fatherId}_{user.motherId}"
  69. };
  70. var sql = query.ToExecuteString();
  71. var userList = query.ToList();
  72. Assert.AreEqual(6, userList.Count);
  73. Assert.AreEqual("1_4_6", userList[0].uniqueId1);
  74. Assert.AreEqual("1_4_6", userList[0].uniqueId2);
  75. Assert.AreEqual("4__", userList[3].uniqueId1);
  76. Assert.AreEqual("4__", userList[3].uniqueId2);
  77. }
  78. }
  79. [TestMethod]
  80. public void Test_Select_ExistClass()
  81. {
  82. using var dbContext = DataSource.CreateDbContext();
  83. var userQuery = dbContext.Query<User>();
  84. {
  85. var query =
  86. from user in userQuery
  87. where user.id > 1
  88. orderby user.id
  89. select new User2(user.id)
  90. ;
  91. var sql = query.ToExecuteString();
  92. var userList = query.ToList();
  93. Assert.AreEqual(5, userList.Count);
  94. }
  95. {
  96. var query =
  97. from user in userQuery
  98. where user.id > 1
  99. orderby user.id
  100. select new User2(user.name)
  101. ;
  102. var sql = query.ToExecuteString();
  103. var userList = query.ToList();
  104. Assert.AreEqual(5, userList.Count);
  105. }
  106. {
  107. var query =
  108. from user in userQuery
  109. where user.id > 1
  110. orderby user.id
  111. select new User2(user.name)
  112. {
  113. id = user.id + 100,
  114. fatherId = user.fatherId,
  115. father = user,
  116. }
  117. ;
  118. var sql = query.ToExecuteString();
  119. var userList = query.ToList();
  120. Assert.AreEqual(5, userList.Count);
  121. }
  122. {
  123. var query =
  124. from user in userQuery
  125. where user.id > 1
  126. orderby user.id
  127. select new User2
  128. {
  129. id = user.id,
  130. fatherId = 12,
  131. };
  132. var sql = query.ToExecuteString();
  133. var userList = query.ToList();
  134. Assert.AreEqual(5, userList.Count);
  135. }
  136. }
  137. class User2 : User
  138. {
  139. public User2() { }
  140. public User2(int nid) { id = nid; }
  141. public User2(string name) { this.name = name; }
  142. public User father;
  143. }
  144. }
  145. }