Задача — пополнить BList уникальными объектами из listB. Инструментал — FW 3.5.
Как такое вообще сделать — я знаю. Foreach по listB с Union. Но мне мой вариант не нравится тем, что на каждом ClassB создается новый IEnumerator, а после цикла приходится делать BList.Clear, BList.AddRange(new List<ClassB>(итоговый IEnumerator)).
Здравствуйте, _FRED_, Вы писали:
_FR>Чть такое "пополнить" я не знаю.
_FR>Если не надо учитывать то, что уже в BList, то _FR>
_FR>BList.AddRange(listB.Distinct());
_FR>
Спасибо, но это не совсем то... "Пополнить" — значит "добавить к уже существующим". В тот же List.
Ну то есть — есть список BList с 1,2,3, есть списки listB с 3,4 и 4,5 — в результате в BList должно быть 1,2,3,4,5. Список Blist — большой и там изначально все уникальное. В каждом из списков listB тоже все уникальное, но вот в двух разных listB могут быть одинаковые значения.
Re[3]: Собрать вместе уникальные объекты из списков.
Здравствуйте, Nikolay_P_I, Вы писали:
_FR>>Чть такое "пополнить" я не знаю. _FR>>Если не надо учитывать то, что уже в BList, то
_FR>>BList.AddRange(listB.Distinct());
N_P>Спасибо, но это не совсем то... "Пополнить" — значит "добавить к уже существующим". В тот же List.
N_P>Ну то есть — есть список BList с 1,2,3, есть списки listB с 3,4 и 4,5 — в результате в BList должно быть 1,2,3,4,5. Список Blist — большой и там изначально все уникальное. В каждом из списков listB тоже все уникальное, но вот в двух разных listB могут быть одинаковые значения.
Если можно быть уверенным, что в BList нет дубликатов, то
var set = new HashSet<ClassB>(BList);
foreach(var item in listB) {
if(!set.Add(item)) {
BList.Add(item);
}//if
}//if
Help will always be given at Hogwarts to those who ask for it.
Re[4]: Собрать вместе уникальные объекты из списков.
Здравствуйте, Nikolay_P_I, Вы писали:
N_P>>>Спасибо за подсказку c HashSet, но надо List — так интерфейс расписан. _FR>>BList в моём примере и есть List. N_P>Спасибо, так и сделаю — не сразу понял, что HashSet как внешний арбитраж используется. N_P>Чисто теоретический вопрос — а можно красиво тоже самое сделать через LINQ или IEnumerable Extensions ?
Только не нужно:
var set = new HashSet<ClassB>(BList);
BList.AddRange(listB.Where(item => !set.Add(item)));
Help will always be given at Hogwarts to those who ask for it.
Re[7]: Собрать вместе уникальные объекты из списков.