C# 3.0 中求交集、差集、并集

.NET Frameword 3.5 中使用的 C# 语言是 3.0,可以很方便地求交集、差集、并集。

int[] arr = new int[3];
int[] arr2 = new int[3];
// 省略为 arr、arr2 赋值

int[] arr3 = arr.Intersect(arr2).ToArray(); // 交集
int[] arr4 = arr.Except(arr2).ToArray(); // 差集
int[] arr5 = arr.Union(arr2).ToArray(); // 并集(arr5 = arr1 + arr2)

顺便说一下

多个集合之间求交集时,注意下面的备注。

 

List<int> list = new List<int>();
for (int i = 0; i < Items.Count; i++)
{
    if (i == 0)
    {
        // 注意第一项不能与 list 求交集,因为 list 还没有内容
        list.AddRange(Items[i]); // 注意不是 list = Items[i];
        continue;
    }
    
    list = list.Intersect(Items[i]).ToList();
    if (list.Count <= 0)
    {
        break; // 后面的不用求了
    }
}

// 注意 Items.Count 等于 0,或者各 Item 之间无交集,结果都是一样的

 

转载自:http://i.quanzhaowo.com/showtopic-332.aspx

 

posted @ 2013-01-26 12:56  曾是土木人  阅读(1529)  评论(0编辑  收藏  举报