我有以下课程:
public class Coordinate
{
public string lat { get; set; }
public string lng { get; set; }
}
我创建了这些对象的数组。
然后我想确定数组中的任何对象是否与表中的一行(纬度和经度)匹配:
location = db.Locations.Where(u => centers.Any(s => u.Lat.Equals(s.lat)) &&
centers.Any(s => u.Lng.Equals(s.lng)))
.ToArray();
但是我遇到了这个例外:
Only primitive types or enumeration types are supported in this context.
您在查询中使用
centers
类。这不是像 System.String
、System.Int32
或 System.Boolean
这样的原始类型。您必须将 lat
类中的 lng
和 centers
属性收集到数组或其他 IEnumerable<string>
实现中。
类似:
var centerLatitudes = (from center in centers
select center.lat).toList();
var centerLongitudes = (from center in centers
select center.lng).toList();
var locations =
db.Locations.Where(loc => centerLatitudes.Any(clt => loc.Lat.Equals(clt.lat)) &&
centerLongitudes.Any(clt => loc.Lng.Equals(clt.lng)))
.ToArray();