2017-10-07 13 views
0

このエラーに関する多くの質問がありますが、私のクエリを満たすためにクエリを変換する方法がわかりません。私のエラー: 'LINQ to Entities does not recognize the method 'Boolean TryGetValue(Int32, System.Collections.Generic.List 1 [System.Nullable 1[System.Int32]] ByRef)' method, and this method cannot be translated into a store expression.' 私の心は溶けている!エンティティへのC#LINQはメソッドを認識しませんTryGetValue

var groupedKeyAndValueOfProjectIdAndZoneIds = groupedProjectDelegationByProjectId.ToDictionary(keySelector: x => x.ProjectId, elementSelector: x => x.ZoneIds); 

...

var data = projects 
         .Select(p => new Project 
         { 
          Id = p.Id, 
          ProjectName = p.Name, 
          Zones = p.Zones.Where(z => 
           (zoneIds.Contains(z.Id) || (groupedKeyAndValueOfProjectIdAndZoneIds.TryGetValue(p.Id, out outValue) ? outValue.Contains(z.Id) : false))) 

... はgroupedKeyAndValueOfProjectAndZonesがDictionary<int, List<int>>であることを考えます。 私を助けてください。

+0

を問い合わせる固定するために

あなたの質問をもっと読みやすくするための少しの努力?答えを早く得るのに役立つ小さなものです。 –

答えて

2

問題は、2つのデータソースを混在させようとしていることです。フードの下にLINQ to Entitiesは、LINQで表現している式をSQLクエリに変換する必要があります。言い換えれば、LINQでselectを書くときに、SQLで1:1のマッピングが得られます。あなたがデータの辞書をスローすると、groupedKeyAndValueOfProjectAndZonesはLINQ to Entitiesと混じり合っています。実行するSQLがないメモリデータソースとしてこれをどのように表現するのか分かりません。あなたがデータベースにgroupedKeyAndValueOfProjectAndZonesに含まれるデータを移動し、そこからそれを照会するか必要とするか、またはあなたがエンティティへのLINQポストやっているのフィルタリングを提供する必要があり、これはあなたが取ることはありませんなぜ

関連する問題