我有一个比较泛型集合?
ObservableCollection<BasicClass> allCollection;
ObservableCollection<BasicClass> selectedCollection;
其中
BasicClass
{
public Name {get;set;}
public Age {get;set;}
}
现在我加入了很多BasicClass
项目allCollection
,只选择BasicClass
到selectedCollection
地方我想添加物品selectedCollection
其中不存在在allCollection
。 我想这
foreach(var a in allCollection)
{
foreach(var s in selectedCollection)
if(a.Name!=s.Name)
//selectedCollection.Add(new BasicClass {Name =a.Name, Age=a.Age});
}
但问题是,这个代码是增加新的BasicClass为每一个无与伦比的名字, 但我实际工作的要求是,对于allCollection的每名比较所有selectedCollection项目。如果它不存在,那么添加其他的移动到下一个项目。
LINQ解决方案可以帮助吗?实际上,我通过更多if和flags实现了这一目标,但这看起来很紧张。 我的传统解决方案
foreach(var a in allCollection)
{
bool same = false;
foreach(var s in selectedCollection)
if(a.Name==s.Name)
same=true;
}
if(same==false)
selectedCollection.Add(new BasicClass {Name =a.Name, Age=a.Age});
而且我讨厌这个..
编辑:
我不想比较集合集合。 我想比较collection1价值collection2所有的值,如果不是有那么我想补充
_“我的实际工作的要求是,对于allCollection的每名比较所有selectedCollection项目如果它不存在再加入否则移动到下一个项目。“_ - 这是对过程的描述,而不是要求。 – stakx 2011-03-25 12:37:28
常规名称比较使密钥非常糟糕。例如,真实世界的数据通常会有同名的人。你期望如何处理这些情况? – asawyer 2011-03-25 12:39:22
@asawyer这不是一个实际的问题或塞纳里奥......我给了一个简单的例子,可以匹配我的问题。 – PawanS 2011-03-25 13:32:18