首页 新闻 会员 周边 捐助

集合问题,判断集合下同名的是一个机构下

0
悬赏园豆:5 [已解决问题] 解决于 2013-07-04 15:00
public A
{
public string Name{get;set;}
public List<B> AB{get;set;}
}
public B
{
public string Name{get;set;}
}

现在有个list<A>,当A.Name相同时是一个集合下的,这个怎么判断下,听说可以做个什么键值对的东西,怎么写啊?

雨淋淋的主页 雨淋淋 | 初学一级 | 园豆:14
提问于:2013-07-04 09:07
< >
分享
最佳答案
0

“现在有个list<A>,当A.Name相同时是一个集合下的,这个怎么判断下”

表述不清啊  你是想说,如果A.Name相同,则算是同一个对象?

然后你要判断什么?

收获园豆:5
TiestoRay | 小虾三级 |园豆:687 | 2013-07-04 10:05

是的如果A.Name相同就放到同一个集合下边

雨淋淋 | 园豆:14 (初学一级) | 2013-07-04 11:28
        private static void GO()
        {
            B b1 = new B("A");
            B b2 = new B("B");
            B b3 = new B("C");
            B b4 = new B("D");

            A A1 = new A("1");
            A A2 = new A("2");
            A A3 = new A("1");

            A1.AB = new List<B>() {b1,b2 };
            A2.AB = new List<B>() { b2, b3 };
            A3.AB = new List<B>() { b3, b4 };
            List<A> listA = new List<A>(){A1,A2,A3};
            test(listA);
        }

        private static void test(List<A> listA)
        {
            ILookup<string, A> l = listA.ToLookup(a => a.Name);
            listA.Clear();
            foreach (var item in l)
            {
                var list = l[item.Key].ToList();
                var listB = new List<B>();
                list.ForEach(a => listB = listB.Concat(a.AB).ToList());
                listA.Add(new A(item.Key)
                {
                    AB = listB
                });
            }
        }
    }
    public class A
    {
        public A(string name) { Name = name; }
        public string Name{get;set;}
        public List<B> AB{get;set;}
    }
    public class B
    {
        public B(string name) { Name = name; }
        public string Name{get;set;}
    }

 

@雨淋淋: 

TiestoRay | 园豆:687 (小虾三级) | 2013-07-04 12:47
其他回答(1)
0

给你看段例子

SharpSoft | 园豆:194 (初学一级) | 2013-07-04 09:19
public class FontCollection : System.Collections.ObjectModel.KeyedCollection<string, _Font>
    {
        protected override string GetKeyForItem(_Font item)
        {
            return item.Name;
        }
    }
支持(0) 反对(0) SharpSoft | 园豆:194 (初学一级) | 2013-07-04 09:20

@SharpSoft: 能帮我解答下吗?谢谢你!(例子没看懂)

支持(0) 反对(0) 雨淋淋 | 园豆:14 (初学一级) | 2013-07-04 09:25

@雨淋淋: 实现

KeyedCollection这个集合,可以把类型中的某个属性当作这个集合的键,只要实现
GetKeyForItem方法就行了
支持(0) 反对(0) SharpSoft | 园豆:194 (初学一级) | 2013-07-04 09:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册