gpt4 book ai didi

c# - 通过编写通用递归函数在 C# .net 中合并复杂字典

转载 作者:行者123 更新时间:2023-11-30 22:44:55 25 4
gpt4 key购买 nike

我有两个复杂的字典形式

Dictionary<string, Dictionary<string, Dictionary<string, List<string>>>>

如您所见,我有内部词典。我想写一个通用的递归函数,它可以合并两个这种形式的复杂字典(或任何其他复杂形式的字典),通过调用自身传递内部字典(具有不同结构)。这个问题还有另外一部分。如何在不循环的情况下将一个字典附加到另一个字典?

多一点解释

该词典包含在特定群组聊天 session 中聊天的用户发送给特定用户的消息列表(阅读句子并从末尾解释词典)。所以我有两本这种形式的词典。一旦我将消息发送给用户,我就会将其从字典中删除。但我想有消息的历史记录。所以在删除它之前,我只是通过将它附加到另一个包含所有消息的 dic 来制作副本,在所有聊天 session 中,从所有用户到所有用户,直到现在!

注意:我有幸使用LINQ

谢谢

NLV

最佳答案

如果我敢这么大胆,以这种方式使用字典会导致代码极难维护。

恕我直言,以下类结构或类似结构会更容易理解和使用。

public class User {
public string Name {get;set;}

// Sessions this user is participating in
// (when you add to Session, add here too - Using a method to add both at same would be safest)
public List<Session> Sessions {get;set;}

// etc
}

public class Message {
public User Sender {get;set;}
public string Text {get;set;}
// etc
}

public class Session {
public string Title {get;set;}
public List<User> Participants {get;set;}
public List<Message> SentMessages {get;set;}
public List<Message> UnsentMessages {get;set;}
}

public class ChatSystem {
// All Users - Indexed by Name
public Dictionary<string, User> Users {get; set;}

// All Sessions - Indexed by Title
public Dictionary<string, Session> Sessions {get; set;}
}

我知道这不是在解决您的具体请求,而是在尝试解决请求的本质 - 能够轻松处理用户、聊天 session 和消息。

玩得开心!

关于c# - 通过编写通用递归函数在 C# .net 中合并复杂字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3271096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com