我有许多类型的列表:
public List<KeyValuePair<KeyValuePair<string, string>,
List<KeyValuePair<string, string>>>> rawComparisonObject;
我想根据构造列表的 KeyValuePair 的“键”来获取这些列表的交集
我试过:
List2 = list1.Intersect(list2).Intersect(list3)......
etc ,但你可以看到它与所有 KeyValuePair 变量相交,而不是我想要的那个。
我还尝试过 KeyValuePair 键上的相交列表?
采用以下形式:
public List<List<KeyValuePair<KeyValuePair<string, string>, List<KeyValuePair<string, string>>>>> getCommon(List<ResourceInformation> input)
{
List<List<KeyValuePair<KeyValuePair<string, string>, List<KeyValuePair<string, string>>>>> rawComparisonObject =
new List<List<KeyValuePair<KeyValuePair<string,string>,List<KeyValuePair<string,string>>>>>();
foreach (ResourceInformation item in input)
{
rawComparisonObject.Add(item.rawComparisonObject);
}
foreach (List<KeyValuePair<KeyValuePair<string, string>, List<KeyValuePair<string, string>>>> item in rawComparisonObject)
{
}
List<List<KeyValuePair<KeyValuePair<string, string>, List<KeyValuePair<string, string>>>>> common =
new List<List<KeyValuePair<KeyValuePair<string, string>, List<KeyValuePair<string, string>>>>>();
for (int i = 0; i < (rawComparisonObject.Count-1); i++)
{
var keysFromB = new HashSet<KeyValuePair<string, string>>(rawComparisonObject[i].Select(x => x.Key));
var result = rawComparisonObject[i+1].Where(x => keysFromB.Remove(x.Key));
common.Add(result.ToList());
}
return common;
}
它返回了非常错误的值,有没有简单的方法可以做到这一点?
我在链接数据工作中使用这种数据结构,通过对象之间的比较来获取公共对象
例如:蝙蝠侠大战盗梦空间
应该返回:
类型:电影 | 电影
主演:克里斯蒂安·贝尔 | 莱昂纳多·迪卡普里奥
当然,所有内容都通过它的 URI 链接突出显示,这就是为什么我需要 keyValuePair 一个用于 URI,另一个用于标签....
我尽力解释这个复杂的数据结构。希望它足够清楚