在链接的记录中循环

本文关键字:循环 记录 链接 | 更新日期: 2023-09-27 18:24:38

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

我们在系统中设置了以下记录:

Product_ID | Product_Name | Product_Price | Original_Product_ID 

当产品被修改时,在Original_Product_ID字段中参考先前的encarnation来创建新记录。

我想做的是传入一个Product_ID(Current)并返回它来自的产品,在某些情况下,它将返回与传入的相同的结果,在其他情况下,我将需要循环浏览许多记录。

请有人对此提出建议。。。

在链接的记录中循环

您需要类似(非递归解决方案)的东西吗?

Product GetOriginalProductById(int productId)
{
    Product p = GetProductById(productId);
    while (p.OriginalId != null && p.Id != p.OriginalId)
    {
        p = GetProductById(p.OriginalId);
    }
    return p;
}

这里有一个简单的递归方法:

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);
}