【问题标题】:Converting List to Dictionary with key from different lists [closed]使用来自不同列表的键将列表转换为字典 [关闭]
【发布时间】:2014-02-14 21:44:14
【问题描述】:

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

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

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

我想将someList3 转换为Dictionary&lt;string, S&gt;,键为:

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;

我想像这样创建一个 key=> 值字典:

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

【问题讨论】:

  • 问题不清楚。所有三个类中的Id 是否相同? Show 简化了样本输入和预期输出。
  • No 三个类的ID都不一样。
  • 每个列表的项目数是否相同?如果 L 的项少于 R,是否应该派生 Key?
  • @stackErr 所以你想扔掉Id'sS 并用R.Id + ":" + L.Id 替换它们?列表的大小是否相同?

标签: c# .net list dictionary


【解决方案1】:

我仍然不确定我是否明白你的问题,但看起来你需要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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-06
    • 2022-10-07
    • 2017-09-12
    • 2021-02-04
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多