Select multiple fields group by and sum
asp.net, c#, linq, linq-group
Solution
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.
Problem
I want to do a query with linq (list of objects) and I really don't know how to do it, I can do the group and the sum but can't select rest of the fields. Example: ``` ID Value Name Category 1 5 Name1 Category1 1 7 Name1 Category1 2 1 Name2 Category2 3 6 Name3 Category3 3 2 Name3 Category3 ``` I want to group by ID, SUM by Value and return all fields like this. ``` ID Value Name Category 1 12 Name1 Category1 2 1 Name2 Category2 3 8 Name3 Category3 ```