EF Linq 将数组连接到表

问题描述 投票:0回答:1

我有以下课程:

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.
c# sql linq entity-framework
1个回答
1
投票

您在查询中使用

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();
© www.soinside.com 2019 - 2024. All rights reserved.