From 7d9755ef583f25184de9cd1573934d5d2d76cb73 Mon Sep 17 00:00:00 2001 From: David Lebee Date: Wed, 27 Nov 2019 16:50:55 -0600 Subject: [PATCH] group by should work, just ToList is not supported by ef core. --- .../EntityFrameworkCoreTests.cs | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/PoweredSoft.DynamicLinq.Test/EntityFrameworkCoreTests.cs b/PoweredSoft.DynamicLinq.Test/EntityFrameworkCoreTests.cs index c609cd8..e4548b1 100644 --- a/PoweredSoft.DynamicLinq.Test/EntityFrameworkCoreTests.cs +++ b/PoweredSoft.DynamicLinq.Test/EntityFrameworkCoreTests.cs @@ -7,6 +7,7 @@ using PoweredSoft.DynamicLinq.Dal.Pocos; using PoweredSoft.DynamicLinq; using Microsoft.EntityFrameworkCore; using PoweredSoft.DynamicLinq.EntityFrameworkCore; +using PoweredSoft.DynamicLinq.Test.Helpers; namespace PoweredSoft.DynamicLinq.Test { @@ -114,6 +115,38 @@ namespace PoweredSoft.DynamicLinq.Test Assert.IsNotNull(author); } + [TestMethod] + public void GroupBy() + { + var context = GetCoreContext(nameof(TestWhereOr)); + SeedForTests(context); + + var authorsWithFamilyNameCount = context.Authors + .GroupBy(t => new + { + t.LastName, + t.FirstName + }).Select(t => new + { + t.Key, + Count = t.Count() + }).ToList(); + + var authorsWithFamilyNameCountDynamic = context.Authors + .GroupBy(t => t.Path("FirstName").Path("LastName")) + .Select(t => t.Key("FirstName", "FirstName").Key("LastName", "LastName").Count("Count")) + .ToDynamicClassList(); + + Assert.AreEqual(authorsWithFamilyNameCount.Count, authorsWithFamilyNameCountDynamic.Count); + for(var i = 0; i < authorsWithFamilyNameCount.Count; i++) + { + Assert.AreEqual(authorsWithFamilyNameCount[i].Key.FirstName, authorsWithFamilyNameCountDynamic[i].GetDynamicPropertyValue("FirstName")); + Assert.AreEqual(authorsWithFamilyNameCount[i].Key.LastName, authorsWithFamilyNameCountDynamic[i].GetDynamicPropertyValue("LastName")); + Assert.AreEqual(authorsWithFamilyNameCount[i].Count, authorsWithFamilyNameCountDynamic[i].GetDynamicPropertyValue("Count")); + } + } + + [TestMethod] public void TestWhereOr() {