На ваш случай можно ответить, используя функции GroupBy
и Select
LINQ. Но я думаю, что в вашем конкретном случае это не будет правильным подходом, поскольку вы накапливаете одни и те же данные, и неправильно платить цену за запросы LINQ.
Имейте в виду, что выражения LINQ, хотя и просты в синтаксисене играйте в чудо-среду выполнения и фактически платите цену за операции.
Итак, мое решение для вас - использовать Dictionary
(может быть, вместе со списком), например так:
var dictionary = new Dictionary<string, string>(); //The second string is the type of unit. Which might be wrong.
void AddValue(ClsLinkObject clsLinkObject)
{
if(dictionary.ContainsKey(clsLinkObject.clientCode))
{
dictionary[clsLinkObject.clientCode] += clsLinkObject.units;
}
else
{
dictionary.Add(clsLinkObject.clientCode, clsLinkObject.units);
}
//You might add to your list as well, if you really want the list here.
}
Вы также можете создать класс Collection
для работы со словарем и списком в одном месте, что мне очень нравится.
Если по какой-либо причине вы абсолютно хотите, чтобы группа по решению сообщала мне иЯ обновлю.
PS Возможно, ваше устройство не string
. А в C # принято называть ваши классы с помощью PascalCasing