From def5b5526986893c515df65c293c2f9eff4a1496 Mon Sep 17 00:00:00 2001 From: bicijinlian Date: Sun, 8 Sep 2019 22:07:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=93=8D=E4=BD=9C=E7=AC=A6=EF=BC=8C=E5=88=9D?= =?UTF-8?q?=E6=AD=A5=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LinqStudy.Test/LinqToObject/SetsTest.cs | 105 ++++++++++++++++++++++++ 1 file changed, 105 insertions(+) diff --git a/LinqStudy.Test/LinqToObject/SetsTest.cs b/LinqStudy.Test/LinqToObject/SetsTest.cs index 4d22ab8..86e5380 100644 --- a/LinqStudy.Test/LinqToObject/SetsTest.cs +++ b/LinqStudy.Test/LinqToObject/SetsTest.cs @@ -275,6 +275,111 @@ namespace LinqStudy.Test.LinqToObject Assert.Empty(intesectItem); } + + /// + /// 重载:自定义比较器 comparer + /// + [Fact] + public void Intersect_comparer_Test() + { + List peoples1 = new List() + { + new Person(){ Id=1, Name="杨过", Age=32}, + new Person(){ Id=2, Name="小龙女", Age=28}, + + }; + + List peoples2 = new List() + { + new Person(){ Id=2, Name="小龙女", Age=28}, + new Person(){ Id=3, Name="云花公主", Age=16}, + }; + + //虽然两个“小龙女”属性相同,但不是一个对象,没有交集。 + var intesectItem = peoples1.Intersect(peoples2, new PersonEqualityComparerById()); + var intesctItemName = intesectItem.First().Name; + + Assert.Equal("小龙女", intesctItemName); + } + #endregion + + #region Intersect + + /// + /// Except: 从一个序列中排除另一个序列中的项。 + /// + [Fact] + public void Except_Test() + { + var p1 = new Person() { Id = 1, Name = "杨过", Age = 32 }; + var p2 = new Person() { Id = 2, Name = "小龙女", Age = 28 }; + var p3 = new Person() { Id = 3, Name = "云花公主", Age = 16 }; + + List peoples1 = new List() + { + p1,p2, + }; + + List peoples2 = new List() + { + p1,p3, + }; + + var exceptItem = peoples1.Except(peoples2); + var itemName = exceptItem.First().Name; + + Assert.Equal("小龙女", itemName); + } + + /// + /// 引用类型:使用 + /// + [Fact] + public void Except_Reference_Test() + { + List peoples1 = new List() + { + new Person(){ Id=1, Name="杨过", Age=32}, + new Person(){ Id=2, Name="小龙女", Age=28}, + + }; + + List peoples2 = new List() + { + new Person(){ Id=2, Name="小龙女", Age=28}, + new Person(){ Id=3, Name="云花公主", Age=16}, + }; + + var exceptItem = peoples1.Except(peoples2); + var itemCount = exceptItem.Count(); + + Assert.Equal(2, itemCount); + } + + /// + /// 重载:自定义比较器 comparer + /// + [Fact] + public void Except_comparer_Test() + { + List peoples1 = new List() + { + new Person(){ Id=1, Name="杨过", Age=32}, + new Person(){ Id=2, Name="小龙女", Age=28}, + + }; + + List peoples2 = new List() + { + new Person(){ Id=2, Name="小龙女", Age=28}, + new Person(){ Id=3, Name="云花公主", Age=16}, + }; + + var exceptItem = peoples1.Except(peoples2, new PersonEqualityComparerById()); + var iexcepItemName = exceptItem.First().Name; + + Assert.Equal("杨过", iexcepItemName); + } #endregion } } \ No newline at end of file