我不确定这是否可行,但也许有人可以提供建议。
我们在系统中设置的记录如下:
Product_ID | Product_Name | Product_Price | Original_Product_ID
修改产品时,会创建一条新记录,并引用Original_Product_ID
字段中的上一个版本。
我想要做的是传递一个Product_ID
(当前)并返回它来自的产品,在某些情况下这将返回与传入的相同,在其他情况下我将需要循环通过一些记录。
请有人就此提出建议......
答案 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);
}