我有一個比較泛型集合?
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