0

このlinqクエリがあり、辞書を取得したい。値はエンティティのコレクションであり、このリストにインクルードを使用したい。

var keys = (from e in ctx.Events
            where (e.DeletedFlag == null || e.DeletedFlag == false) &&
            e.ModuleID == moduleId &&
            e.ParentID == null && 
            e.EventType == Core.Enum.EventType.Menu
            select new { 
                         Key = e,
                         Values = (from v in ctx.Events
                                   where (v.DeletedFlag == null || v.DeletedFlag == false) &&
                                   v.ModuleID == moduleId &&
                                   v.ParentID == e.PublicationID
                                   select v).Include(v => v.Document).Include(v => v.EventTAF).Include(v => v.Appointment)
                           }).ToList();

このクエリを実行すると、linq が Include メソッドを認識しないというエラーが表示されます。

何か案は ?

4

2 に答える 2

1

内部クエリを使用する代わりに、2 つの外部クエリを作成して結合できます。

var events = from e in ctx.Events
             where (e.DeletedFlag == null || e.DeletedFlag == false) &&
                 e.ModuleID == moduleId &&
                 e.ParentID == null && 
                 e.EventType == Core.Enum.EventType.Menu
                 select e;

var values = from v in ctx.Events
             where (v.DeletedFlag == null || v.DeletedFlag == false) &&
                 v.ModuleID == moduleId
             select v;
//TODO add Includes to values query

var query = from e in events
            join v in values
            on e.PublicationID equals v.ParentID into children
            select new
            {
                Key = e,
                Values = children,
            };
于 2013-09-13T16:59:56.053 に答える