gpt4 book ai didi

Linq 查询递归

转载 作者:行者123 更新时间:2023-12-05 00:36:30 24 4
gpt4 key购买 nike

我在 C# 和 Entity 框架中工作。我的数据库中有一个名为 Genre 的表。这是它的属性:idGenre、名称、idParentGenre。

例如。值将是:

(idGenre = 1, name = "acoustic", idParentGenre=2)

(idGenre = 2, name = "摇滚", idParentGenre=2)

(idGenre = 3, name = "country", idParentGenre=4)

(idGenre = 4, name = "folk", idParentGenre=5)

(idGenre = 5, name = "someOtherGenre", idParentGenre=5)

如您所见,它有点像一棵树。

现在,我有了一种搜索此表的方法。输入参数是 idGenre 和 idParentGenre。如果类型 (idGenre) 是 idParentGenre 的儿子/孙/孙/...,我应该返回。

比如我得到idGenre=3,idParentGenre=5,我应该返回true。

但是,Linq 中没有递归。我有办法做到这一点吗?

最佳答案

我会创建一个方法来处理这个问题,而不是使用 LINQ:

bool HasParent(int genre, int parent)
{
Genre item = db.Genres.FirstOrDefault(g => g.IdGenre == genre);
if (item == null)
return false;

// If there is no parent, return false,
// this is assuming it's defined as int?
if (!item.idParentGenre.HasValue)
return false;

if (item.idParentGenre.Value == parent)
return true;

return HasParent(item.idParentGenre, parent);
}

这让您可以在单个递归函数中处理它。

关于Linq 查询递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8661193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com