C# 将列表转换为 2D 列表并添加其他值

本文关键字:列表 添加 其他 转换 2D | 更新日期: 2023-09-27 18:32:43

您好,需要一些有关此问题的帮助。 希望我能很好地描述它。

我有一个解析器,可以遍历文档并找到sessionID,从中删除一些标签并将它们放入列表中。

  while ((line = sr.ReadLine()) != null)
            {
                Match sID = sessionId.Match(line);
                if (sID.Success)
                {
                    String sIDString;
                    String sid = sID.ToString();
                    sIDString = Regex.Replace(sid, "<[^>]+>", string.Empty);
                    sessionIDList.Add(sIDString);
                }
            }

然后我去思考列表并得到不同的会话ID。

    List<String> distinctSessionID = sessionIDList.Distinct().ToList();

现在我需要去想他再次记录并添加与会话 ID 匹配的行并将它们添加到列表中。 这是我遇到问题的部分。

我是否需要创建一个 2d 列表,以便我可以将匹配的日志行添加到相应的会话 ID。

我正在查看这个,但似乎无法找到一种方法来复制我的 Distinct 列表,然后将我需要的行添加到新数组中。

从我可以测试的内容来看,这似乎会将值添加到主列表中

List<List<string>> masterLists = new List<List<string>>();
 Foreach (string value in distinctSessionID)
{
  masterLists[0].Add(value);
}   

如何将我需要的行添加到相应的主列表中。 说主列表[0]。加值是 1,如何将行添加到 1?

          masterList[0][0].add(myLInes);

基本上我想要

    Sessionid1
        -------> related log line
        -------> Related log line 
   SessionID2 
        -------> related log line
        -------> related log line.
等等

等等。 我让解析全部工作,只是将值放入第二个字符串列表中才是问题所在。

谢谢

C# 将列表转换为 2D 列表并添加其他值

您可以做的是,简单地创建一个具有公共属性的类,并列出该自定义类。

public class Session
{
  public int SessionId{get;set;}
  public List<string> SessionLog{get;set;}
}
List<Session> objList = new List<Session>();
var session1 = new Session();
session1.SessionId = 1;
session1.SessionLog.Add("description lline1");
objList.Add(session1);

这里有一种方法可以做到这一点:

 public class MultiDimDictList: Dictionary<string, List<int>>  { }
 MultiDimDictList myDictList = new MultiDimDictList ();
 Foreach (string value in distinctSessionID)
{
     myDictList.Add(value, new List<int>()); 
     for(int j=0; j < lengthofLines; j++)
     {
         myDictList[value].Add(myLine);
     }
}

您需要将lengthofLines替换为数字,以指示您有多少次迭代的行。

在这里查看查尔斯·布雷塔纳的答案