我正在尝试使用通用链表在应用程序中保存一些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/

10-13 04:16