将字符串拆分为字典

本文关键字:字典 拆分 字符串 | 更新日期: 2023-09-27 18:10:52

我试图在app.config中加入3个不同的值,以便它们相互关联。

<add key="User" value="User1,User2,User3,Pass4" />
<add key="Pass" value="Pass1,Pass2,Pass3,Pass4" />
<add key="Location" value="Location1,Location2,Location3,Location4" />
var User = ConfigurationManager.AppSettings.Get("User").Split(new[] { ',' });
var Pass = ConfigurationManager.AppSettings.Get("Pass").Split(new[] { ',' });
var Location = ConfigurationManager.AppSettings.Get("Location").Split(new[] { ',' });

我没有麻烦在逗号上做一个分裂来获得每个键的每个值。我想做的是让User1与Pass1和Location1一起去。这是我可以通过哈希表/字典轻松做到的事情吗?如果有,最简单的方法是什么?

将字符串拆分为字典

最好的方法可能是定义一个类来保存它们:

public class UserInfo
{
    public string User { get; private set; }
    public string Pass { get; private set; }
    public string Location { get; private set; }
    public UserInfo(string user, string pass, string location)
    {
        this.User = user;
        this.Pass = pass;
        this.Location = location;
    }
}

然后是一个简单的循环来构建它们:

List<UserInfo> userInfos = new List<UserInfo>();
for(int i = 0; i < User.Length; i++)
{
    var newUser = new UserInfo(User[i], Pass[i], Location[i]);
    userInfos.Add(newUser);
}

如果你想要一个查找表或字典,比如,User:

Dictionary<string, UserInfo> userLookup = userInfos.ToDictionary(userInfo => userInfo.User);

编辑:你可能还想做一个快速检查,以确保你有适当数量的相应信息,以及在你构建你的对象:

if (User.Length != Pass.Length || User.Length != Location.Length)
    throw new Exception("Did not enter the same amount of User/Pass/Location data sets!");