在我的代码中,我有一行
var d3 = d.Union(d2).ToDictionary(s => s.Key, s => s.Value);这感觉很奇怪,因为我可能会做很多这样的事情。没有.ToDictionary()。如何联合字典并将其保留为字典?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var list = new List<Tuple<int, string>>();
list.Add(new Tuple<int, string>(1, "a"));
list.Add(new Tuple<int, string>(3, "b"));
list.Add(new Tuple<int, string>(9, "c"));
var d = list.ToDictionary(
s => s.Item1,
s => s.Item2);
list.RemoveAt(2);
var d2 = list.ToDictionary(
s => s.Item1,
s => s.Item2);
d2[5] = "z";
var d3 = d.Union(d2).ToDictionary(s => s.Key, s => s.Value);
}
}
}发布于 2013-02-08 22:22:44
使用“直接”Union的问题在于,它不会将字典解释为字典;它会将字典解释为IEnumerable<KeyValyePair<K,V>>。这就是您需要最后一个ToDictionary步骤的原因。
如果您的字典没有重复的键,这应该会更快一些:
var d3 = d.Concat(d2).ToDictionary(s => s.Key, s => s.Value);请注意,如果两个字典包含具有不同值的相同键,则Union方法也将中断。如果两个字典包含相同的键,即使它对应于相同的值,Concat也会中断。
https://stackoverflow.com/questions/14774480
复制相似问题