1

我的 WCF 实体框架代码中有这行代码

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.

住宿类型是一个字典。我可以看到问题在于 EF 无法将我的代码转换为 SQL,这就是它失败的原因,但我看不到我需要编写什么查询来执行此功能。

谢谢,

萨钦

4

1 回答 1

0

对于将来遇到类似问题的任何人,这就是我解决它的方法。我在字典中创建了我感兴趣的所有值的列表(对应的布尔值为真的那些),然后在该列表的查询中执行包含。

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 回答