私はこれを思いつきます:
public partial class Forum
{
public List<Forum> GetHierachy(Forum foru)
{
foreach (var forum in foru.SubForums.ToList())
{
yield return GetHierachy(forum);
}
}
}
このため:
public partial class Forum
{
public int Id { get; set; }
public int SubForumId { get; set; }
public virtual ICollection<Forum> SubForums { get; set; }
public virtual Forum ParentForum { get; set; }
}
そして私はそれを得る:
The body of 'Jami.Data.Forum.GetHierachy(Jami.Data.Forum)' cannot be an iterator block because 'System.Collections.Generic.List<Jami.Data.Forum>' is not an iterator interface type:
それから私はこれを見つけました: 「収量」を理解するのに役立つ人もいます
そこで、メソッドを次のように変更しました。
public IEnumerable<Forum> GetHierachy(Forum foru)
{
foreach (var forum in foru.SubForums.ToList())
{
yield return GetHierachy(forum);
}
}
そして今、私はキャスト例外を見逃しています。
Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<Jami.Data.Forum>' to 'Jami.Data.Forum'. An explicit conversion exists (are you missing a cast?)
この時点で、なぜこの例外が発生するのか、私にはわかりません。私は間違っているかもしれませんが、私にとっては、単一のアイテムではなくコレクションを返すように見えます。