我正在尝试使用通用链表在应用程序中保存一些WorkFlow步骤。这是我将其持久保存到数据库中的方式。
订单ID工作流步骤ID父工作流步骤ID
178373 1 NULL
178373 2第1
178373 3 2
我将此数据集放回datareader对象中。然后,我遍历数据读取器并创建一个包含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/