如何根据键插入两个键值对列表?我努力了:
List<KeyValuePair<string, string>> listA = new List<KeyValuePair<string, string>>();
List<KeyValuePair<string, string>> listB = new List<KeyValuePair<string, string>>();
...
var result = listA.Intersect(listB);
预计这不起作用。我是否需要根据密钥编写自己的比较器,或者是否有使用 LINQ/Lambda 的简单方法?
Thanks!
var keysFromB = new HashSet<string>(listB.Select(x => x.Key));
var result = listA.Where(x => keysFromB.Remove(x.Key));
请注意,此代码模仿了Intersect http://msdn.microsoft.com/en-us/library/bb460136.aspx通过使用Remove http://msdn.microsoft.com/en-us/library/bb342694.aspx方法。这意味着两个序列都被视为集合:如果有多个项目具有相同的键listA
then result
将仅包含其中一项。如果您不希望出现这种行为,请使用Contains http://msdn.microsoft.com/en-us/library/bb356440.aspx方法而不是Remove
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)