【发布时间】:2015-10-27 21:01:54
【问题描述】:
我有两个不同长度的字典列表。两个字典中的键相同,值可能不同。
var A = List<Dictionary<string, object>>();
var B = List<Dictionary<string, object>>();
我想根据其中包含的字典对象中的 3 个键的值将 A 和 B 相交。
例如:
var dict = new Dictionary<string,object>{{"W",val1},{"X",val2},{"Y",val3},{"Z",val4}}
与上述类似的字典包含在列表 A 和 B 中,其中 val1、val2、val3、val4 的值各不相同。如果键 W、X、Y 的值相等,我想使 A 和 B 相交,但我不关心 Z 中的值是否相交。有没有办法优雅地实现这一点?
举例说明:
A.add(new Dictionary<string,object>{{"W",123},{"X",456},{"Y",789},{"Z",103}});
A.add(new Dictionary<string,object>{{"W",124},{"X",456},{"Y",789},{"Z",893}});
A.add(new Dictionary<string,object>{{"W",123},{"X",456},{"Y",789},{"Z",134}});
B.add(new Dictionary<string,object>{{"W",123},{"X",456},{"Y",789},{"Z",900}});
B.add(new Dictionary<string,object>{{"W",124},{"X",456},{"Y",789},{"Z",893}});
B.add(new Dictionary<string,object>{{"W",212},{"X",321},{"Y",789},{"Z",134}});
如果我执行 A.intersect(B),我希望得到以下列表,
{"W",123},{"X",456},{"Y",789},{"Z",103}
{"W",123},{"X",456},{"Y",789},{"Z",900}
{"W",124},{"X",456},{"Y",789},{"Z",893}
【问题讨论】:
-
我不确定我是否理解这个问题。您能否举例说明在这种情况下所需的结果是什么?
-
等等什么?你有两个字典列表?
-
交叉点是什么意思?
标签: c# list dictionary