You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何用字符串列表作键、对象列表作值创建员工Hashtable?

快速构建员工Hashtable的方法

嗨,这事儿好办!既然你已经有了一一对应的用户名列表UsersToCompare和员工对象列表People,咱们可以用几种简洁的方式把它们转成以用户名为键、员工对象为值的Hashtable:

方法一:用LINQ快速生成(推荐)

如果你的项目里引用了System.Linq,可以用Zip方法把两个列表配对,再转成Dictionary,最后转换成Hashtable(毕竟现在.NET里Dictionary比Hashtable更常用,但如果业务必须用Hashtable的话,转换也很简单):

using System.Linq;
using System.Collections;

// 先将两个列表配对并生成Dictionary
var employeeDict = UsersToCompare.Zip(People, (userName, employee) => new { UserName = userName, Employee = employee })
                                 .ToDictionary(pair => pair.UserName, pair => pair.Employee);

// 转换为Hashtable
Hashtable employeeHashtable = new Hashtable(employeeDict);

方法二:手动循环构建

如果不想用LINQ,或者需要更灵活地处理重复键这类特殊情况,直接循环遍历列表构建Hashtable也很直观:

using System.Collections;

Hashtable employeeHashtable = new Hashtable();
for (int i = 0; i < UsersToCompare.Count; i++)
{
    // 先检查键是否已存在,避免重复键导致的异常
    if (!employeeHashtable.ContainsKey(UsersToCompare[i]))
    {
        employeeHashtable.Add(UsersToCompare[i], People[i]);
    }
    else
    {
        // 根据你的需求处理重复键:比如覆盖旧值、抛出提示或跳过
        // employeeHashtable[UsersToCompare[i]] = People[i]; // 覆盖模式
        // throw new ArgumentException($"用户名 {UsersToCompare[i]} 已存在"); // 抛出异常
    }
}

注意事项

  • 确保UsersToCompare和People的长度完全一致,否则Zip方法会以较短的列表为准,漏掉较长列表里的元素;循环的话则会出现索引越界的问题。
  • 用户名作为键必须唯一!如果UsersToCompare里有重复的用户名,ToDictionary会直接抛出异常,所以用循环的话记得加上重复键的处理逻辑。

内容的提问来源于stack exchange,提问作者user5463745

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:21:00