【发布时间】:2017-02-07 15:57:06
【问题描述】:
今天这给我带来了无穷无尽的问题。我有这个简单的查询
var result =
DataContext.Accommodations.Where(a =>
(criteria.MinPrice == null || a.AccommodationRates.Any(r => r.From >= criteria.MinPrice)) &&
(criteria.MaxPrice == null || a.AccommodationRates.Any(r => r.To <= criteria.MaxPrice)) &&
(criteria.Locations == null || criteria.Locations.Count == 0 || a.AccommodationPlaceJoins.Any(j => criteria.Locations.Contains(j.Place.PlaceName)))
);
这个查询的最后一行给我带来了问题
(criteria.Locations == null ||
criteria.Locations.Count == 0 ||
a.AccommodationPlaceJoins.Any(j => criteria.Locations.Contains(j.Place.PlaceName)))
它给出的错误是
无法创建类型的常量值 'System.Collections.Generic.IList`1'。只有原始类型('例如 在此上下文中支持 Int32、String 和 Guid')。
我什至没有尝试创建列表。我在这里要做的就是带回与一个地方相关联的住宿(地方表中的地名通过AccommodationPlaceJoin表链接到住宿表)等于条件中的任何一个地名.Locations(IList 类型)。
我试过把这一行改成这样,但没用。
(criteria.Locations == null ||
criteria.Locations.Count == 0 ||
a.AccommodationPlaceJoins.Any(j => criteria.Locations.Any(l => l == j.Place.PlaceName)))
【问题讨论】:
标签: c# lambda entity-framework-4 linq-to-entities