Добавив еще один ответ здесь (который, кажется, был удален, я пробовал этот подход и заставил его работать тоже).
Вся заслуга этому анониму.
source.GroupBy(x => x.Name, y=> y.Value)
.Select( result => new { Name = result.Name,
Values = result.Select(r=> r.Value).ToList() } );
Словарное решение кажется более интуитивным, так как я вижу все преобразования, производящие результат.
РЕДАКТИРОВАТЬ:
Потратил слишком много времени на это, вот еще 2 способачтобы это произошло: -
source.GroupBy(grpKey => grpKey.Name,
elementSelector => elementSelector,
(resultSelectorName, resultSelectorValues ) => new
{
Name = resultSelectorName,
Values = resultSelectorValues.Select(v=>v.Value).ToList()
});
2)
source.GroupBy(grpKey => grpKey.Name,
elementSelector => elementSelector.Value,
(resultSelectorName, resultSelectorValue ) => new
{
Name = resultSelectorName,
Values = resultSelectorValue.ToList()
});