From 35709cd2e35b8f254663c546fad65f3dbb369ec7 Mon Sep 17 00:00:00 2001 From: bicijinlian Date: Sun, 8 Sep 2019 10:58:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E7=BB=84=E6=93=8D=E4=BD=9C=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LinqStudy.Test/LinqToObject/GroupTest.cs | 142 ++++++++++++++++++++--- 1 file changed, 124 insertions(+), 18 deletions(-) diff --git a/LinqStudy.Test/LinqToObject/GroupTest.cs b/LinqStudy.Test/LinqToObject/GroupTest.cs index c511165..732400d 100644 --- a/LinqStudy.Test/LinqToObject/GroupTest.cs +++ b/LinqStudy.Test/LinqToObject/GroupTest.cs @@ -1,10 +1,7 @@ using System.Collections; using System.Collections.Generic; - using System.Linq; - using Xunit; - using LinqStudy; namespace LinqStudy.Test.LinqToObject @@ -76,7 +73,7 @@ namespace LinqStudy.Test.LinqToObject } /// - /// 重载:keySelector, comparer + /// 重载2:keySelector, comparer /// key:是引用类型,使用自定义比较器 /// [Fact] @@ -91,16 +88,20 @@ namespace LinqStudy.Test.LinqToObject }; - var group = peoples.GroupBy(p=>p.Hometown,new HometownEqualityComparer()); + var group = peoples.GroupBy + ( + p=>p.Hometown, + new HometownEqualityComparer() + ); - var groupFirstNames=group.First().Select(q=>q.Name).ToList(); + var actual=group.First().Select(q=>q.Name).ToList(); var expected=new List(){"河南周口人","俺河南周口哩"}; - Assert.Equal(expected,groupFirstNames); + Assert.Equal(expected,actual); } /// - /// 重载:keySelector, elementSelector + /// 重载3:keySelector, elementSelector /// key:是引用类型,使用自定义比较器 /// [Fact] @@ -115,15 +116,20 @@ namespace LinqStudy.Test.LinqToObject }; - var group = peoples.GroupBy(p=>p.Id,t=>t.Name).ToList(); + var group = peoples.GroupBy + ( + p=>p.Id, + t=>t.Name + ) + .ToList(); - var groupFirstNames=group[2].FirstOrDefault(); + var actual=group[2].FirstOrDefault(); var expected="上海松江人"; - Assert.Equal(expected,groupFirstNames); + Assert.Equal(expected,actual); } /// - /// 重载:keySelector elementSelector comparer + /// 重载4:keySelector elementSelector comparer /// [Fact] public void GroupBy_keySelector_elementSelector_comparer_Test() @@ -137,14 +143,23 @@ namespace LinqStudy.Test.LinqToObject }; - var group = peoples.GroupBy(p=>p.Hometown,t=>t.Name,new HometownEqualityComparer()).ToList(); + var group = peoples.GroupBy + ( + p=>p.Hometown, + t=>t.Name, + new HometownEqualityComparer() + ) + .ToList(); - var groupFirstNames=group[2].FirstOrDefault(); + var actual=group[2].FirstOrDefault(); var expected="上海松江人"; - Assert.Equal(expected,groupFirstNames); + Assert.Equal(expected, actual); } + /// + /// 重载5:keySelector resultSelector + /// [Fact] public void GroupBy_keySelector_resultSelector_Test() { @@ -157,12 +172,103 @@ namespace LinqStudy.Test.LinqToObject }; - var group = peoples.GroupBy(p=>p.Id, (key,teacher) => teacher.Select(t=>t.Name)).ToList(); + var group = peoples.GroupBy + ( + p=>p.Id, + (key,teacher) => teacher.Select(t=>t.Name) + ) + .ToList(); + + var lastGroupItem=group[2].FirstOrDefault(); + var expected="上海松江人"; + + Assert.Equal(expected,lastGroupItem); + } + + /// + /// 重载6:keySelector resultSelector + /// + [Fact] + public void GroupBy_keySelector_resultSelector_comparer_Test() + { + List peoples=new List() + { + new Teacher(){Id=1, Name="河南周口人", Hometown=new Hometown(){Province="河南", City="周口"}}, + new Teacher(){Id=1, Name="俺河南周口哩", Hometown=new Hometown(){Province="河南",City="周口"}}, + new Teacher(){Id=3, Name="上海宝山人", Hometown=new Hometown(){Province="上海",City="宝山"}}, + new Teacher(){Id=4, Name="上海松江人", Hometown=new Hometown(){Province="上海",City="松江"}}, + }; + + var group = peoples.GroupBy + ( + p=>p.Hometown, + (key,teacher) => teacher.Select(t=>t.Name), + new HometownEqualityComparer() + ) + .ToList(); + + var lastItem=group[2].FirstOrDefault(); + var expected="上海松江人"; + + Assert.Equal(expected, lastItem); + } + + /// + /// 重载7:keySelector elementSelector resultSelector + /// + [Fact] + public void GroupBy_keySelector_elementSelector_resultSelector_Test() + { + List peoples=new List() + { + new Teacher(){Id=1, Name="河南周口人", Hometown=new Hometown(){Province="河南", City="周口"}}, + new Teacher(){Id=1, Name="俺河南周口哩", Hometown=new Hometown(){Province="河南",City="周口"}}, + new Teacher(){Id=3, Name="上海宝山人", Hometown=new Hometown(){Province="上海",City="宝山"}}, + new Teacher(){Id=4, Name="上海松江人", Hometown=new Hometown(){Province="上海",City="松江"}}, + }; + + var group = peoples.GroupBy + ( + p=>p.Hometown.Province+p.Hometown.City, + (teacher)=> new {Id= teacher.Id,name=teacher.Name, Province=teacher.Hometown.Province}, + (key, result) => result.Select(q=>q.Province) + ) + .ToList(); - var groupFirstNames=group[2].FirstOrDefault(); + var lastItem=group[2].FirstOrDefault(); var expected="上海松江人"; - Assert.Equal(expected,groupFirstNames); + Assert.Equal(expected, lastItem); + } + + /// + /// 重载8:keySelector elementSelector resultSelector + /// + [Fact] + public void GroupBy_keySelector_elementSelector_resultSelector_comparer_Test() + { + List peoples=new List() + { + new Teacher(){Id=1, Name="河南周口人", Hometown=new Hometown(){Province="河南", City="周口"}}, + new Teacher(){Id=1, Name="俺河南周口哩", Hometown=new Hometown(){Province="河南",City="周口"}}, + new Teacher(){Id=3, Name="上海宝山人", Hometown=new Hometown(){Province="上海",City="宝山"}}, + new Teacher(){Id=4, Name="上海松江人", Hometown=new Hometown(){Province="上海",City="松江"}}, + }; + + var group = peoples.GroupBy + ( + p=>p.Hometown, + (teacher)=> new {Id= teacher.Id,name=teacher.Name, Province=teacher.Hometown.Province}, + (key, result) => result.Select(q=>q.Province), + new HometownEqualityComparer() + + ) + .ToList(); + + var lastItem=group[2].FirstOrDefault(); + var expected="上海"; + + Assert.Equal(expected, lastItem); } } } \ No newline at end of file