В настоящее время у меня есть IEnumerable<MyObject>
, где MyObject
имеет свойства String Name
и long Value
.Слияние дублирующих элементов внутри IEnumerable
Если бы я должен был иметь внутри Enumerable, 10 экземпляров MyObject
, каждый из которых имеет другое имя и значение, за исключением одного с тем же именем, что и другое.
Имеет ли .NET (или LINQ) встроенный метод, который позволит мне найти дубликат и, если возможно, объединить свойство Value
, чтобы в нем было всего 9 элементов, каждый из которых отличался Name
и тот, у которого был дубликат, есть Value
, который равен сумме его «я» и «дубликат».
До сих пор я нашел, что единственный способ перебрать по всему IEnumerable
и искать дубликаты и генерировать новый IEnumerable
уникальных предметов, но это кажется неопрятным и медленным.
Стоит отметить, что один, вероятно, следует указать тип 'StringComparer' использовать :) –
еще один вариант' уаг Dict = новый ConcurrentDictionary(); Parallel.ForEach (объекты, obj => dict.AddOrUpdate (obj.Name, obj.Value, (ключ, oldvalue) => oldvalue + obj.Value)); ' –