一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

List之Union(),Intersect(),Except() 亦可以說(shuō)是數(shù)學(xué)中的并集,交集,差集

 昵稱10504424 2013-03-06

Union()

這個(gè)方法將會(huì)Union(并集)兩個(gè)序列(集合)連接成一個(gè)新列表(集合)

方法定義是:

public static IEnumerable<TSource> Union<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second)

public static IEnumerable<TSource> Union<TSource>(this IEnumerable<TSource> first,IEnumerable<TSource> second, IEqualityComparer<TSource> comparer)


 

Intersect ()

它將產(chǎn)生兩個(gè)序列的交集.

方法定義是: 

public static IEnumerable<TSource> Intersect<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second) 

public static IEnumerable<TSource> Intersect<TSource>(this IEnumerable<TSource> first, Enumerable<TSource> second,IEqualityComparer<TSource> comparer) 

 

Except ()

它是從一個(gè)集合中刪除存在另一個(gè)集合中的項(xiàng).兩個(gè)序列產(chǎn)生的集合差. 英文意思是:除此之外

方法定義是: 

public static IEnumerable<TSource> Except<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second) 
public static IEnumerable<TSource> Except<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second, IEqualityComparer<TSource> comparer)

實(shí)例代碼分別如下:

 

復(fù)制代碼
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data; 


namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            IList<Student> oneStudents = new List<Student>();
            oneStudents.Add(new Student(1,false,"小新1","徐匯"));
            oneStudents.Add(new Student(2,false,"小新2","閔行"));
            oneStudents.Add(new Student(3, false, "小新3", "嘉定"));
            oneStudents.Add(new Student(4, false, "小新4", "閘北"));

            IList<Student> twoStudents = new List<Student>();
            twoStudents.Add(new Student(5, false, "小新5", "貴州"));
            twoStudents.Add(new Student(6, false, "小新6", "湖北"));
            twoStudents.Add(new Student(7, false, "小新7", "山東"));
            twoStudents.Add(new Student(8, false, "小新8", "西藏"));

            IList<Student> threeStudents = new List<Student>();
            threeStudents.Add(new Student(1, false, "小新1", "徐匯"));
            threeStudents.Add(new Student(2, false, "小新2", "閔行"));
            var bingji = oneStudents.Union(twoStudents, new StudentListEquality()).ToList();//并(全)集 
              var jiaoji = oneStudents.Intersect(threeStudents, new StudentListEquality()).ToList();//交集 
              var chaji = oneStudents.Except(threeStudents, new StudentListEquality()).ToList();//差

              Console.WriteLine();
            Console.WriteLine("以下是并集的結(jié)果");            
            bingji.ForEach(x =>
            {
                Console.WriteLine(x.StudentId.ToString() + "    " + x.Sex.ToString() + "   " + x.Name.ToString()+" "+x.Address.ToString());
     
            });
            Console.WriteLine();
            Console.WriteLine("以下是交集的結(jié)果");           
            jiaoji.ForEach(x =>
            {
                Console.WriteLine(x.StudentId.ToString() + "    " + x.Sex.ToString() + "   " + x.Name.ToString() + " " + x.Address.ToString());

            });

            Console.WriteLine();
            Console.WriteLine("以下是差集的結(jié)果");            
            chaji.ForEach(x =>
            {
                Console.WriteLine(x.StudentId.ToString() + "    " + x.Sex.ToString() + "   " + x.Name.ToString() + " " + x.Address.ToString());

            });
        }

    }





public class Student { public Student(int studentId, bool sex, String name, String address) { this.StudentId = studentId; this.Sex = sex; this.Name = name; this.Address = address; } public int StudentId { get; set; } public bool Sex { get; set; } public String Name { get; set; } public String Address { get; set; } } public class StudentListEquality : IEqualityComparer<Student> { public bool Equals(Student x, Student y) { return x.StudentId == y.StudentId; } public int GetHashCode(Student obj) { if (obj == null) { return 0; } else { return obj.ToString().GetHashCode(); } } } }
復(fù)制代碼

 

以上運(yùn)行的結(jié)果是:

以上的結(jié)果是重載了含有參數(shù)的IEqualityComparer<TSource> 方法,實(shí)現(xiàn)IEqualityComparer接口  對(duì)數(shù)據(jù)進(jìn)行了重復(fù)過(guò)濾,如果不實(shí)現(xiàn)這個(gè)方法結(jié)果是

 var bingji = oneStudents.Union(twoStudents).ToList();//并(全)集 
 var jiaoji = oneStudents.Intersect(threeStudents).ToList();//交集 
var chaji = oneStudents.Except(threeStudents).ToList();//差集

但是對(duì)于List<T>的T是簡(jiǎn)單類型,如int  string  long 。。。。。是怎么樣的呢?代碼如下所示

復(fù)制代碼
IList<int> firstNumbers = new List<int>() 
 
             { 
 
                 1,2,3,4,5,6,7 

             };

            IList<int> secondNumbers = new List<int>() 
 
             { 

                 8,9,10 

             };

            IList<int> thressNumbers = new List<int>() 
 
             { 

                 1,2,3 

             };


            var result1 = firstNumbers.Union(secondNumbers).ToList();
            var result2 = firstNumbers.Intersect(thressNumbers).ToList();
            var result3 = firstNumbers.Except(thressNumbers).ToList();
            Console.WriteLine("以下是并集的結(jié)果");
            result1.ForEach(x => Console.WriteLine(x));

            Console.WriteLine();
            Console.WriteLine("以下是交集的結(jié)果");
            result2.ForEach(x => Console.WriteLine(x));

Console.WriteLine(); Console.WriteLine(
"以下是差集的結(jié)果"); result3.ForEach(x => Console.WriteLine(x));
Console.WriteLine(
"以上是簡(jiǎn)單類型如:int string long。。。。。沒(méi)有實(shí)現(xiàn)IEqualityComparer<T>接口");
復(fù)制代碼

結(jié)果是:

 

說(shuō)明一下 剛回來(lái)看了下書(shū),是差集 不是補(bǔ)集、 已更改!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    久久精品国产亚洲熟女| 亚洲综合精品天堂夜夜| 午夜精品一区二区av| 精品国产亚洲一区二区三区| 国产综合欧美日韩在线精品| 97人妻人人揉人人躁人人| 欧美午夜不卡在线观看| 国内九一激情白浆发布| 国产午夜福利在线免费观看| 人妻一区二区三区多毛女| 东京热男人的天堂社区| 国产日产欧美精品视频| 中文字幕高清免费日韩视频| 日韩午夜福利高清在线观看| 欧美精品女同一区二区| 久久精品国产第一区二区三区| 国产精品久久精品毛片| 国产欧美一区二区三区精品视| 亚洲深夜精品福利一区| 果冻传媒在线观看免费高清| 男生和女生哪个更好色| 日韩性生活视频免费在线观看 | 国产成人精品国产亚洲欧洲| 亚洲精品欧美精品日韩精品| 精品人妻一区二区三区四在线| 丰满人妻熟妇乱又乱精品古代| 国产无摭挡又爽又色又刺激| 色婷婷国产熟妇人妻露脸| 国产免费观看一区二区| 国产免费一区二区不卡| 好吊妞在线免费观看视频| 日韩中文字幕欧美亚洲| 成人三级视频在线观看不卡 | 国产亚洲精品俞拍视频福利区| 日韩一区二区免费在线观看 | 欧美成人久久久免费播放| 欧洲自拍偷拍一区二区| 国产精品伦一区二区三区在线| 两性色午夜天堂免费视频| 在线观看国产午夜福利| 99香蕉精品视频国产版|