合并在C#.NET复杂字典写一个通用的递归函数

我有两个复杂的字典形式合并在C#.NET复杂字典写一个通用的递归函数

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

所以当你看到我内心的字典。我想写一个通用的递归函数,它可以通过调用自己传递内部字典(具有不同的结构)来合并这种形式的两个复杂字典(或任何其他复杂形式的字典)。这个问题还有另一部分。如何将一个字典添加到其他字符而不循环?

多一点的解释

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

注意:我不是祝福使用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;}

}

我知道这是不是解决您的具体要求,但试图解决请求的实质 - 能够与用户的工作,轻松聊天会话和消息。

玩得开心!

回答:

运行时调度有使用反射,这是非常混乱的,当仿制药开始发挥作用。我建议“作弊”并改用IDictionary

所以,你的方法声明会是这个样子:

// Merges b into a 

void Merge<T>(T a, T b) where T : IDictionary

然后,遍历的b每个条目。如果密钥不在a中,则将kvp添加到a并继续迭代。如果值为is IDictionary,则递归地将a值和b值传递给Merge。否则,如果它is ICollection,则将其值合并到a的集合中。否则,错误。

以上是 合并在C#.NET复杂字典写一个通用的递归函数 的全部内容, 来源链接: utcz.com/qa/265481.html

回到顶部