BrightstarDB.Tests.EntityFramework.LinqTests.TestOrderedDistinct C# (CSharp) Метод

TestOrderedDistinct() приватный Метод

private TestOrderedDistinct ( ) : void
Результат void
        public void TestOrderedDistinct()
        {
            var connectionString = GetConnectionString("TestOrderedDistinct");
            var context = new MyEntityContext(connectionString);

            var alice = context.Persons.Create();
            alice.Name = "Alice";
            var bob = context.Persons.Create();
            bob.Name = "Bob";
            var carol = context.Persons.Create();
            carol.Name = "Carol";

            var programming = context.Skills.Create();
            programming.Name = "Programming";
            var csharp = context.Skills.Create();
            csharp.Name = "C#";
            csharp.Parent = programming;
            csharp.SkilledPeople.Add(alice);
            csharp.SkilledPeople.Add(bob);

            var vb = context.Skills.Create();
            vb.Name = "Visual Basic";
            vb.Parent = programming;
            vb.SkilledPeople.Add(alice);
            vb.SkilledPeople.Add(carol);

            var fsharp = context.Skills.Create();
            fsharp.Name = "F#";
            fsharp.Parent = programming;
            fsharp.SkilledPeople.Add(alice);

            context.SaveChanges();

            //var allProgrammers =
            //    context.Skills.Where(x => x.Parent.Id.Equals(programming.Id)).SelectMany(s => s.SkilledPeople).ToList();
            //// No distinct so we will get alice three times
            //Assert.That(allProgrammers.Count, Is.EqualTo(5));
            //Assert.That(allProgrammers.Where(p=>p.Name.Equals("alice")), Is.EqualTo(3));

            var allProgrammersDistinct =
                context.Skills.Where(x => x.Parent.Id.Equals(programming.Id)).SelectMany(s => s.SkilledPeople).Distinct().ToList();
            // Distinct so we will get alice only once
            Assert.That(allProgrammersDistinct.Count, Is.EqualTo(3));
            Assert.That(allProgrammersDistinct.Count(p => p.Name.Equals("Alice")), Is.EqualTo(1));

            var allProgrammersOrderedDistinct =
                context.Skills.Where(x => x.Parent.Id.Equals(programming.Id)).SelectMany(s => s.SkilledPeople).OrderByDescending(p=>p.Name).Distinct().ToList();
            // Distinct so we will get alice only once
            Assert.That(allProgrammersOrderedDistinct.Count, Is.EqualTo(3));
            Assert.That(allProgrammersOrderedDistinct[0].Name, Is.EqualTo("Carol"));
            Assert.That(allProgrammersOrderedDistinct[1].Name, Is.EqualTo("Bob"));
            Assert.That(allProgrammersOrderedDistinct[2].Name, Is.EqualTo("Alice"));


        }