Есть ли лучший GroupBy в словарь (или решение) для группирования? - PullRequest
6 голосов
/ 17 ноября 2011

Есть ли способ написать оператор ToDictionary ниже, используя синтаксис Linq SQL-ish?

public class KeyedType
{
    public string Name { get; set; }
    public string Value { get; set; }
}

Dictionary<string,List<KeyedType>> groups =
    list.GroupBy((g) => g.Name)
        .ToDictionary(g => g.Key, g => g.ToList());

Ответы [ 2 ]

4 голосов
/ 17 ноября 2011

Всякий раз, когда вы обнаружите, что у вас есть Dictionary<TKey, List<TSomething>>, вы можете с радостью использовать Lookup<TKey, TSomething>. Если это так, вы можете использовать ToLookup, чтобы сделать его.

Однако ни для ToLookup, ни для вашего кода, к сожалению, нет синтаксиса выражения запроса.

0 голосов
/ 29 января 2013

Каким-то образом, сделав GroupBy, вы уже выиграли.Попробуйте преобразовать в словарь, если это действительно необходимо.Например, используя группу по:

var groups = list.GroupBy(g => g.Name);
foreach (var group in groups)
{
    var groupName = group.Key;
    var valueList = group.Select(obj => obj.Value);
    foreach (var value in valueList)
    {
        //...
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...