【发布时间】:2014-03-14 17:28:22
【问题描述】:
首先,我有一个带有 2 个参数(经度、纬度)的函数。
RETURNS TABLE
AS
RETURN
(
select dbo.GeoCalculateDistance (@lat1Degrees,@lon1Degrees,Latitude,Longitude) as Distance, PKRestaurantId as PkKeyId from StRestaurant
)
如您所知,我有一张名为 StRestaurant 的桌子。在此表中,我有 4 列(PkRestaurantId、RegionId、经度、纬度)。
而且,我需要一个带有 4 个参数的方法。
public List<RestaurantDetailDto> GetRestaurant(int regionid, decimal latitude, decimal longitude, OrderType orderType)
{}
这种方法会给我周围的餐馆。但是如果我想用距离系统化这个列表,我必须加入我的餐厅表和函数。这是我的查询。
var query = from restaurant in context.StRestaurant
join distance in context.CalculateDistanceTable(latitude, longitude) on restaurant.PKRestaurantId equals distance.PkKeyId
where restaurant.FKRegionId == regionid
select new
{
Restaurant = restaurant,
DistanceTable = distance,
};
然后我正在检查 orderType,
switch (orderType)
{
case OrderType.Distance:
query = query.OrderBy(x => x.DistanceTable.Distance);
break;
// and the anothers
}
最后,我想把这个列表当作;
var queryResult = query.ToList();
我一直犯这个错误:
嵌套查询没有合适的键。
我也尝试了上面的查询,但它返回相同的错误:s
var query = context.StRestaurant.Where(x => x.FKRegionId == regionid && x.IsActive).Join(
context.CalculateDistanceTable(latitude, longitude),
restaurant => restaurant.PKRestaurantId,
result => result.PkKeyId,
(restaurant, result) => new
{
Restaurant = restaurant,
MinumumPackagePrice = restaurant.StRestaurantRegionRelation.FirstOrDefault(x => x.FKRestaurantId == restaurant.PKRestaurantId).MinumumPackageCharge,
DistanceTable = result,
RestaurantImage = restaurant.StRestaurantImage.Where(x => x.IsDefault && x.FKRestaurantId == restaurant.PKRestaurantId),
}
);
请帮忙!!
【问题讨论】:
-
什么时候出现这个错误?
-
当我尝试进行以下操作时出现此错误:var response = query.ToList();
标签: sql linq join linq-to-sql jointable