你好需要一些帮助解决这个问题。希望我能够很好地描述它。
我有一个解析器,它通过文档找到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);
}
}
然后我去思考清单并获得distinctSessionID。
List<String> distinctSessionID = sessionIDList.Distinct().ToList();
现在我需要再次考虑他的文档并添加与sessionID匹配的行并将它们添加到列表中。这是我遇到问题的部分。
我是否需要创建一个二维列表,以便将匹配的日志行添加到相应的会话中。
我正在看这个,但似乎无法弄清楚我可以复制到我的Distinct列表然后将我需要的行添加到新数组中。
从我可以测试的内容来看,这会将值添加到主列表中
List<List<string>> masterLists = new List<List<string>>();
Foreach (string value in distinctSessionID)
{
masterLists[0].Add(value);
}
如何将我需要的行添加到相应的Masterlist中。假设masterList [0] .Add值为1,如何将行添加到1?
masterList[0][0].add(myLInes);
基本上我想要
Sessionid1
-------> related log line
-------> Related log line
SessionID2
-------> related log line
-------> related log line.
等等。我解析所有工作,只是将值放到第二个字符串列表是问题。
谢谢,
答案 0 :(得分:0)
这是一种方法:
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
替换为数字,以指示您拥有的线的迭代次数。
见Charles Bretana的回答here
答案 1 :(得分:0)
您可以做的是,简单地创建一个具有公共属性的类,并创建该自定义类的列表。
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);