循环链接记录

时间:2012-02-15 16:34:08

标签: c#

我不确定这是否可行,但也许有人可以提供建议。

我们在系统中设置的记录如下:

Product_ID | Product_Name | Product_Price | Original_Product_ID 

修改产品时,会创建一条新记录,并引用Original_Product_ID字段中的上一个版本。

我想要做的是传递一个Product_ID(当前)并返回它来自的产品,在某些情况下这将返回与传入的相同,在其他情况下我将需要循环通过一些记录。

请有人就此提出建议......

2 个答案:

答案 0 :(得分:2)

您是否需要(非递归解决方案)?

Product GetOriginalProductById(int productId)
{
    Product p = GetProductById(productId);

    while (p.OriginalId != null && p.Id != p.OriginalId)
    {
        p = GetProductById(p.OriginalId);
    }

    return p;
}

答案 1 :(得分:0)

这是一个简单的递归方法:

void GetOriginalProducts(Item i, ref List<Item> items)
{
    if(i.ID == i.OriginalID) return;

    items.Add(i);
    GetOriginalProducts(items.Single(it => it.OriginalID == i.ID), ref items);
}