【发布时间】:2012-07-31 19:52:48
【问题描述】:
任何 LINQ 解决方案(最好)将不胜感激。在连接两者时我需要重复的值。
【问题讨论】:
-
如果您的意思是“相交”而不是“连接”,则可以编辑问题的标题。
标签: c# .net list generics concatenation
任何 LINQ 解决方案(最好)将不胜感激。在连接两者时我需要重复的值。
【问题讨论】:
标签: c# .net list generics concatenation
如果要找出两个列表中都有哪些项目,则需要使用Enumerable.Intersect() 方法。
var list1 = new List<KeyValuePair<string,string>>();
var list2 = new List<KeyValuePair<string,string>>();
list1.Add(new KeyValuePair<string,string>("key1", "value1"));
list1.Add(new KeyValuePair<string,string>("key2", "value2"));
list2.Add(new KeyValuePair<string,string>("key1", "value1"));
list2.Add(new KeyValuePair<string,string>("key3", "value3"));
var inBothLists = list1.Intersect(list2); // contains only key1,value1
有两种重载,一种采用IEqualityComparer<T>,因此如果默认的没有按照您想要的方式执行比较,您可以编写并提供您自己的。
【讨论】:
KeyValuePair<T1, T2> 的相等比较器是否真的检查 Key:T1 和 Value:T2 的值或基于 KeyValuePair<T1, T2> 实例的基于实例的比较器(如 .ReferenceEquals())?
new KeyValuePair<string,string>("key#", "value#") 进行了修改,它的行为似乎符合预期。
Tuple<string,string> 它可以工作。