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.
等等等等。 我让解析全部工作,只是将值放入第二个字符串列表中才是问题所在。
谢谢
您可以做的是,简单地创建一个具有公共属性的类,并列出该自定义类。
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
替换为数字,以指示您有多少次迭代的行。
在这里查看查尔斯·布雷塔纳的答案