使用来自不同列表的键将列表转换为字典

时间:2014-02-14 21:44:14

标签: c# .net list dictionary

我有几个不同类别(R,L,S)的几个列表:

List<R> someListR = ...;
List<L> someListL = ...;
List<S> someListS = ...;

每个类都有一个整数Id字段,但它们都有唯一的ID。

我想将someList3转换为Dictionary<string, S>,密钥为:

R.Id + ":" + L.Id

修改

列表大小可能不同,在这种情况下我会创建一个键。

例如,List R具有:

R1.Id = 111;
R2.Id = 222;
R3.Id = 333;

和列表L:

L1.Id = 123;
L2.Id = 234;
L3.Id = 345;
L4.Id = 456;

我想创建一个键=&gt;价值字典是这样的:

111:123 => S1
222:234 => S2
333:345 => S3

1 个答案:

答案 0 :(得分:3)

我仍然不确定我是否收到您的问题,但看起来您需要Zip方法:

var result = listL.Zip(listR, (l,r) => new { l, r })
                  .Zip(listS, (x, s) => new { x.l, x.r, x.s })
                  .ToDictionary(x => x.l.ID + ":" + x.r.ID, x => x.s);