public Dictionary<string, List<int>> GetAllMemberIDsWithinATable()
{
List<string> _sectionDataList = this.GetSectionInfo();
var dict = new Dictionary<string, List<int>>();
List<int> _memberIds = new List<int>();
string _staadName = "";
int iVal = 0;
bool isEnd = false;
for (int iSecList = 0; iSecList < _sectionDataList.Count(); iSecList++)
{
while ((iSecList < _sectionDataList.Count()) &&
(!_sectionDataList[iSecList].Equals("TABLE")))
{
string data = _sectionDataList[iSecList];
if (!(data.Equals("TO") || (data.Equals("-"))))
{
if (data.Equals("SP") || data.Equals("0.01"))
{
isEnd = true;
break;
}
else if (!_memberIds.Contains(Convert.ToInt32(data)))
_memberIds.Add(Convert.ToInt32(data));
}
else
{
int jData = Convert.ToInt32(_sectionDataList[iSecList + 1]);
if (iSecList != 0)
iVal = iSecList - 1;
int xData = Convert.ToInt32(_sectionDataList[iVal]);
for (int i = xData; i <= jData; i++)
if (!_memberIds.Contains(i))
_memberIds.Add(i);
}
iSecList++;
}
if (iSecList != _sectionDataList.Count())
{
if (!isEnd)
{
iSecList = iSecList + 2;
_staadName = _sectionDataList[iSecList];
this.staadName = _staadName;
dict.Add(_staadName, _memberIds);
_memberIds.Clear();
}
}
}
return dict;
}
当新密钥_memberIds
添加时, _staadname
正在被替换。就像我想要将TUB1501506,ISMC250等作为我的密钥并从文件中获取它们并将数据存储在memberIds
来自
“43 TO 62 71 72 82 92 101至105 110至112 137至146 156 157 168 171 173 - 174 185 TO 188 197 198 218 220 TO 222 240 241 244 256 272 274 275 - 280至282 285至290 294表ST TUB1501506 63至69 73至77 79至81 83至87 89至91 93至100 108 109 113至117 - 119至136 189至195 206 209至215 217 223 225至239 245 253 264 278 291 - 293 297表FR ISMC250 1至4 7至22 25至28 31至42 147至155 158至166 175至183 292 - 299表FR ISMC200 SP 0.01“
正如您所看到的那样,模式是最后一个字符串_staadname
,字符串前面的范围是该名称的memberIds
列表。
答案 0 :(得分:1)
这只是因为你只有_memberIds
的一个实例。你永远不会在循环中重新实例化它。因此,您的列表将在for
循环的每次迭代中重复使用。
尝试在循环中移动它:
// not here
for (int iSecList = 0; iSecList < _sectionDataList.Count(); iSecList++)
{
// put it here
List<int> _memberIds = new List<int>();
// your original code
}