我有重复的键具有不同的值,我想将其转换为具有1个键及其值的字典.
下一个例子将最好地解释我的意思:
var tup = new List<Tuple<int, int>>();
tup.Add(new Tuple<int, int>(1, 1));
tup.Add(new Tuple<int, int>(1, 2));
var dic = new Dictionary<int, List<int>>();
Run Code Online (Sandbox Code Playgroud)
什么是将tup转换为dic的优雅方式?
我设法做到这一点,foreach但想在LINQ写它.
foreach (var item in tup)
{
if (dic.ContainsKey(item.Item1))
{
dic[item.Item1].Add(item.Item2);
}
else
{
dic.Add(item.Item1, new List<int> { item.Item2 });
}
}
Run Code Online (Sandbox Code Playgroud)
var list = tup.GroupBy(x => x.Item1)
.ToDictionary(
x => x.Key,
x => x.Select(y => y.Item2).ToList());
Run Code Online (Sandbox Code Playgroud)
首先,我们按GroupBy项目1 分组.这应该是足够明显的.
然后,我们打电话ToDictionary并传入a keySelector和a elementSelector.他们分别选择键和值,给出一个IGrouping<int, Tuple<int, int>>.
作为参考,这种特殊的过载ToDictionary,使用.
另外,正如Iridium在评论中所说,这也有效:
var list = tup.GroupBy(x => x.Item1, x => x.Item2)
.ToDictionary(x => x.Key, x => x.ToList());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
472 次 |
| 最近记录: |