5

エンティティで実行しようとしていますが、ToDictionary()このエラーまたはこのような別のエラーが発生し続けますが、エンティティがメッセージに表示されます:

タイプ「匿名タイプ」の定数値を作成できません。このコンテキストでは、プリミティブ型または列挙型のみがサポートされています。

または、エラーメッセージに私のエンティティがあるこれ:

タイプ 'DataAccess.Posts' の定数値を作成できません。このコンテキストでは、プリミティブ型または列挙型のみがサポートされています。

クエリをいくつかの小さなピースに分割しましたが、それでもこれらのエラー メッセージのいずれかが表示されます。

var posts = dbContext
    .Posts
    .Where(x => channels.Contains(x.Connection))
    .DistinctBy(p => new { p.Medium, p.ID })
    .OrderByDescending(x => x.Date)
    .Skip(skip)
    .Take(take);

var asociatedTags = dbContext
    .PostTagRelation
    .Where(x => posts.Any(g => g.ItemId == x.ItemId && g.Medium == x.Medium)
        && x.Company == companyId)
    .Select(x => new { x.ItemId, x.Tags })
    .ToList();

Dictionary<string, Tags> dicTags = new Dictionary<string, Tags>();
dicTags = asociatedTags.ToDictionary(g => g.ItemId, g => g.Tags);

これに関するいくつかの投稿に出くわしましたが、私の状況ではそれらを配置できません。

どんな助けでも本当に感謝します!

4

2 に答える 2

1

ToList()匿名クラスの作成前に呼び出しを行います( Select(x => new { x.ItemId, x.Tags }))

var dicTags= dbContext.PostTagRelation
   .Where(x => posts.Any(g => g.ItemId == x.ItemId && g.Medium == x.Medium)
       && x.Company == companyId)
   //force execution of the query
   .ToList() 
   //now you have an IEnumerable instead of IQueryable
   .ToDictionary(g => g.ItemId, g => g.Tags);
于 2013-09-30T11:13:00.187 に答える