1

WCF Entity Framework コードにこのコード行があります

if (criteria.AccommodationTypes != null && criteria.AccommodationTypes.Count > 0)
   result = result.Where(a => criteria.AccommodationTypes[a.Type]);

実行時にこのエラーが発生しています

LINQ to Entities does not recognize the method 'Boolean get_Item(System.String)' method, and this method cannot be translated into a store expression.

AccommodationTypes は IDictionary です。問題は、EF が自分のコードを SQL に変換できないことであり、それが原因で失敗していることがわかりますが、この機能を実行するためにどのクエリを記述する必要があるかわかりません。

ありがとう、

サチン

4

1 に答える 1

0

将来同様の問題を抱えている人のために、これが私がそれを解決した方法です。興味のあるディクショナリ内のすべての値 (対応するブール値が true の値) のリストを作成し、そのリストのクエリで contains を実行しました。

var types = (from type in criteria.AccommodationTypes where type.Value select type.Key).ToList();

if (criteria.AccommodationTypes != null && criteria.AccommodationTypes.Count > 0)
  result = result.Where(a => types.Contains(a.Type));
于 2012-09-05T16:35:53.453 に答える