Query_Distinct_Test.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using System.Data;
  2. using Microsoft.VisualStudio.TestTools.UnitTesting;
  3. namespace Vitorm.MsTest.CommonTest
  4. {
  5. [TestClass]
  6. public class Query_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 fatherIds = query.ToList();
  16. Assert.AreEqual(3, fatherIds.Count);
  17. Assert.AreEqual(0, fatherIds.Except(new int?[] { 4, 5, null }).Count());
  18. }
  19. {
  20. var query = userQuery.Select(u => new { u.fatherId }).Distinct();
  21. var userList = query.ToList();
  22. var fatherIds = userList.Select(u => u.fatherId).ToList();
  23. Assert.AreEqual(3, fatherIds.Count);
  24. Assert.AreEqual(0, fatherIds.Except(new int?[] { 4, 5, null }).Count());
  25. }
  26. {
  27. var query = userQuery.Select(u => new { u.fatherId, u.motherId }).Distinct();
  28. query = query.Skip(1).Take(100);
  29. var userList = query.ToList();
  30. var fatherIds = userList.Select(u => u.fatherId).ToList();
  31. var motherIds = userList.Select(u => u.motherId).ToList();
  32. Assert.AreEqual(2, userList.Count);
  33. Assert.AreEqual(0, fatherIds.Except(new int?[] { 4, 5, null }).Count());
  34. Assert.AreEqual(0, motherIds.Except(new int?[] { 6, null }).Count());
  35. }
  36. {
  37. var query = userQuery.Select(u => new { user = u, u.fatherId, u.motherId }).Distinct();
  38. var userList = query.ToList();
  39. Assert.AreEqual(6, userList.Count);
  40. }
  41. {
  42. var query = userQuery.Distinct();
  43. var userList = query.ToList();
  44. Assert.AreEqual(6, userList.Count);
  45. }
  46. }
  47. }
  48. }