首页 新闻 搜索 专区 学院

两个集合 list<int>型的 list1,list2,

0
悬赏园豆:20 [已解决问题] 解决于 2012-05-14 15:38

两个集合 list<int>型的 list1,list2,
例如list1包含list2,怎样取交集之外的集合?
要执行次数最少最快的 freamkwork2.0编译

小咩快跑的主页 小咩快跑 | 初学一级 | 园豆:23
提问于:2012-04-25 16:03
< >
分享
最佳答案
0

法一:循环中循环比较  list1循环中加入list2循环 进行比较,将不包含在list2中的数据保存到一个新的集合即可。

法二:将list1通过循环拼接成一个字符串,再循环list2,判断list2中的数据是否包含在list1字符串中,将不包含的数据保存到新的集合即可。

虽然这两种方法不是最好的,但至少解决了你的问题。。。

应该还有更好的方法,同时期待。。。

收获园豆:4
KivenRo | 小虾三级 |园豆:1722 | 2012-04-25 16:20
其他回答(4)
0

int[] numbersA = { 1,3,5,6,8};

int[] numbersB = { 1, 3, 5, 7, 9 };

var commonNumbers =numbersA.Except(numbersB);

foreach (var n in commonNumbers)

{

  Console.WriteLine(n);

}

 

最后得出来的结果就是6,7,8,9

收获园豆:4
┢┦偉 | 园豆:1240 (小虾三级) | 2012-04-25 16:18

汗颜啊。。没看清楼主的问题。

 

但是我感觉你的这个问题问的有点奇怪》...

支持(0) 反对(0) ┢┦偉 | 园豆:1240 (小虾三级) | 2012-04-25 16:28
0

     List<int> lst1 = new List<int>();
            List<int> lst2 = new List<int>();
            for (int i = 0; i < 6; i++) {
                lst1.Add(i);
            }
            for (int i = 4; i < 10; i++)
            {
                lst2.Add(i);
            }
            List<int> lst3=lst1.FindAll(m=>
                { return !lst2.Exists(n => { return n == m; }); });
            lst3.AddRange( lst2.FindAll(m =>
            { return !lst1.Exists(n => { return n == m; }); }));

收获园豆:4
無限遐想 | 园豆:3740 (老鸟四级) | 2012-04-25 16:27
1
public static IEnumerable<int> Except(IEnumerable<int> list1, IEnumerable<int> list2)
{
    foreach (int item in list1)
    {
        if (!list2.Contains(item))
            yield return item;
    }
}
收获园豆:4
麒麟.NET | 园豆:3614 (老鸟四级) | 2012-04-25 17:13
0
list1.Except(list2);//得到list1有的,list2没有的
list2.Except(list1);//得到list2有的,list1没有的
收获园豆:4
dudu | 园豆:39014 (高人七级) | 2012-04-25 17:47

是.NET 2.0

支持(0) 反对(0) 麒麟.NET | 园豆:3614 (老鸟四级) | 2012-04-26 17:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册