Entity Framework .Any()过滤器出错

RPM*_*984 5 c# linq entity-framework

这是我的查询:

var x = db
   .Users
   .Where(u => u.Locations.Any(l => searchedLocation.Counties.Any(c => c.LocationId == l.LocationId));
Run Code Online (Sandbox Code Playgroud)

语境:

  • UsersIQueryable<User>.(EF对象集)
  • searchedLocation是一个Location对象.
  • Counties是一个ICollection<MiniLocation>.

我想做什么:

返回所有用户,其中这些位置的任何县具有属于搜索位置的任何县的locationId.

例:

搜索纽约市(LocationId = 1. County1LocationId = 2)

用户:鲍勃.地点:Soho.County1LocationId = 2.Counts2 LocationId = 3.

这是一场比赛.(因为Soho有一个LocationId为2的县,NYC也是如此)

我收到错误:

无法创建类型为"xxx.xxx.Locations.MiniLocation"的常量值.在此上下文中仅支持原始类型(例如Int32,String和Guid').

有任何想法吗?

aqw*_*ert 1

MSDN 页面声明不支持此构造。您可以将此方法用于 .Net 3.5 Linq to Entities,以帮助替换Any.