у меня есть
ObservableCollection<BasicClass> allCollection;
ObservableCollection<BasicClass> selectedCollection;
, где
BasicClass
{
public Name {get;set;}
public Age {get;set;}
}
Теперь я добавил много BasicClass
предметов к allCollection
и выбрал только BasicClass
к selectedCollection
SomeWhere, куда я хочу добавить элементы в 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 для каждого непревзойденного имени,
но мое требование - для каждого Name of allCollection сравнить все элементы selectedCollection. Если его там нет, добавьте еще ход для следующего элемента.
Решение LINQ может помочь этому? На самом деле, я добился этого с помощью флагов if и if, но это выглядит очень беспокойно.
Мое традиционное решение
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});
И я ненавижу это ..
EDIT:
Я не хочу сравнивать коллекцию с коллекцией.
Я хочу сравнить значение collection1 с collection2 всех значений, и если его там нет, то я хочу добавить