是否有更好的GroupBy to Dictionary(或解决方案)来进行分析?

时间:2011-11-17 17:30:10

标签: c# linq dictionary

有没有办法使用SQL-ish Linq语法编写下面的ToDictionary语句?

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 个答案:

答案 0 :(得分:4)

每当您发现Dictionary<TKey, List<TSomething>>时,您可能会发现自己可以愉快地使用Lookup<TKey, TSomething>。如果证明是这种情况,您可以使用ToLookup制作一个。

但是,对于ToLookup和代码都没有可用的查询表达式语法。

答案 1 :(得分:0)

通过做GroupBy你已经屈服了。如果真的有必要,尝试转换为字典。例如。使用group by:

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)
    {
        //...
    }
}