有没有办法使用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());
答案 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)
{
//...
}
}