Since the number of - separating the value from the key seems to be variable, I guess using a Regex to split is more appropriate:
var query = yourlist.Select(x=>{
var arr = Regex.Split(x,@"[-]+");
return new{
Name = arr[0],
Value = Int32.Parse(arr[1])
};
})
.GroupBy(x=>x.Name)
.Select(x=> new{Name = x.Key, Value=x.Sum(y=>y.Value)});
In this way you'll have a new anonymous object, with property Name equal to your string, and property Value equal to the sum of the Values of the elements with such Name.
If, instead you want as a return a string with the sum of the values as value, you can replace the last select with:
.Select(x=> x.Key + " ----- " + x.Sum(y=>y.Value).ToString());
And if, you already have a list with a name and value field, just remove the first Select.