Updated :
If you’re trying to avoid grouping for all the fields, you can group just by Id
:
data.GroupBy(d => d.Id)
.Select(
g => new
{
Key = g.Key,
Value = g.Sum(s => s.Value),
Name = g.First().Name,
Category = g.First().Category
});
But this code assumes that for each Id
, the same Name
and Category
apply. If so, you should consider normalizing as @Aron suggests. It would imply keeping Id
and Value
in one class and moving Name
, Category
(and whichever other fields would be the same for the same Id
) to another class, while also having the Id
for reference. The normalization process reduces data redundancy and dependency.