私はこれを考え出すEF4.1再帰クエリは、階層的データを取得するために
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:
Iこれを見つけた: Some help understanding "yield"
だから私はに私の方法を変更:
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?)
この点私は、この例外がなぜ発生するのか、細かい考えがありません。私は間違っているかもしれませんが、私にとっては単一のアイテムではなくコレクションを返すように見えます。
[yield(C#リファレンス)](http://msdn.microsoft.com/library/9k7k7cf0.aspx)を参照してください。 –
はい、GetHierarchyの戻り値の型を返すので、コレクションを返します。イテレータはネストされません。 –