Query_LinqMethods_Distinct_Test.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using System.Data;
  2. using Microsoft.VisualStudio.TestTools.UnitTesting;
  3. namespace Vitorm.MsTest.CommonTest
  4. {
  5. [TestClass]
  6. public class Query_LinqMethods_Distinct_Test
  7. {
  8. [TestMethod]
  9. public void Test_Distinct()
  10. {
  11. using var dbContext = DataSource.CreateDbContext();
  12. var userQuery = dbContext.Query<User>();
  13. {
  14. var query = userQuery.Select(u => u.fatherId).Distinct();
  15. //var sql = query.ToExecuteString();
  16. var fatherIds = query.ToList();
  17. Assert.AreEqual(3, fatherIds.Count);
  18. Assert.AreEqual(0, fatherIds.Except(new int?[] { 4, 5, null }).Count());
  19. }
  20. {
  21. var query = userQuery.Select(u => new { u.fatherId }).Distinct();
  22. //var sql = query.ToExecuteString();
  23. var userList = query.ToList();
  24. var fatherIds = userList.Select(u => u.fatherId).ToList();
  25. Assert.AreEqual(3, fatherIds.Count);
  26. Assert.AreEqual(0, fatherIds.Except(new int?[] { 4, 5, null }).Count());
  27. }
  28. {
  29. var query = userQuery.Select(u => new { u.fatherId, u.motherId }).Distinct();
  30. query = query.Skip(1).Take(100);
  31. var sql = query.ToExecuteString();
  32. var userList = query.ToList();
  33. var fatherIds = userList.Select(u => u.fatherId).ToList();
  34. var motherIds = userList.Select(u => u.motherId).ToList();
  35. Assert.AreEqual(2, userList.Count);
  36. Assert.AreEqual(0, fatherIds.Except(new int?[] { 4, 5, null }).Count());
  37. Assert.AreEqual(0, motherIds.Except(new int?[] { 6, null }).Count());
  38. }
  39. {
  40. var query = userQuery.Select(u => new { user = u, u.fatherId, u.motherId }).Distinct();
  41. //var sql = query.ToExecuteString();
  42. var userList = query.ToList();
  43. Assert.AreEqual(6, userList.Count);
  44. }
  45. {
  46. var query = userQuery.Distinct();
  47. //var sql = query.ToExecuteString();
  48. var userList = query.ToList();
  49. Assert.AreEqual(6, userList.Count);
  50. }
  51. }
  52. }
  53. }