Я получил здесь исключение, которое не находит ключ rootPartNo
в словаре unbreakableLinkMap
.KeyNotFoundException в C#
MyTree<IDbRecord> currentTree = PartHelper.GetTreeForRootId(succesorId, graph);
#region TreeSheet
string rootPartNo = currentTree.Root.Payload.GetField(Part.c_partNo).GetString();
//get spirit links
var spiritLinks = graph.unbreakableLinkMap[rootPartNo];
Worksheet treeWS = excel.Worksheets[2];
treeWS.Name = "Tree";
long displayedPartId = long.Parse(GetIdFromSession(Part.t_name));
int rowNo = 0;
bool bold = false;
Color color = Color.Black;
foreach (MyTreeNode<IDbRecord> node in currentTree.Root.DepthFirstNodeEnumerator)
{
string partNo = node.Payload.GetField(Part.c_partNo).GetString();
treeWS.Cells[rowNo, node.Depth].PutValue(partNo);
bold = false;
color = Color.Black;
if (spiritLinks.Find(suc => suc.PartNo == partNo || suc.SucPartNo == partNo) != null)
{
color = Color.Red;
}
if (node.Payload.GetField(Part.c_id).GetInt64() == displayedPartId)
{
bold = true;
}
headerFStyle.Font.IsBold = bold;
headerFStyle.Font.Color = color;
treeWS.Cells[rowNo, node.Depth].SetStyle(headerFStyle);
rowNo++;
}
Как я могу проверить/подтвердить это?
ли вы использовать отладчик? – MickyD
Да. Это не очень много говорит о том, что словарь не имеет значений. – Nomonom
Проверьте/подтвердите, что? Если словарь говорит, что ключа там нет, это не так. Вам не нужно проверять/проверять это. Вероятно, происходит то, что либо ключ находится в другом случае (словарь по умолчанию «чувствителен к регистру»). Вы также можете использовать методы 'Contains()' или 'TryGet()', чтобы избежать исключения и сначала проверить, находится ли в нем значение. – RobIII