我正在尝试使用通用链接列表来保存应用程序中的一些工作流程步骤。以下是我将其保存到数据库的方法。
订单ID WorkFlowStepID ParentWorkFlowStepID
178373 1 NULL
178373 2 1
178373 3 2
我将此数据集返回到数据读取器对象中。然后,我循环访问数据读取器并创建一个包含 WorkFlowStepID 属性和 ParentWorkFlowStepID 属性的 WorkFlowStep 对象。我使用 .AddFirst() 方法将第一个对象添加到我的 LinkedList 中。我的下一个想法是创建下一个对象,然后将其插入 LinkedList 中的对象后面,其中它的 WorkFlowStepID 等于新对象的 ParentWorkFlowStepID。我无法弄清楚如何在 LinkedList 中找到该对象。 find() 方法要求提供一个值,但我不明白它是什么值,也不知道如何找到它。
最佳答案
那么你的意思是你正在使用 linked list class in the framework ?
如果是这样,Find
方法并没有真正做到你想要的。基本上你想要一个带有谓词的版本。如果该类公开 LinkedListNode<T>
的迭代器,这会更容易。幸运的是,很容易提供一个扩展方法来做到这一点:
public static IEnumerable<LinkedListNode<T>> GetNodes<T>(this LinkedList<T> list)
{
LinkedListNode<T> current = list.First;
while (current != null)
{
yield return current;
current = current.Next;
}
}
然后你可以这样做(我强调所有这些都未经测试):
var node = list.GetNodes().FirstOrDefault(x.Value.WorkFlowerStepID = parentWorkFlowStepID);
if (node != null)
{
list.AddAfter(node, newItem);
}
else
{
// Whatever. Add to tail?
}
关于.net - 如何创建通用链表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/299950/