我正在尝试获取最近的记录,如下面但排序操作抱怨表达式不允许。如何在MongoDB中实现这一目标?
NotSupportedException:$ sort中只允许使用字段。 MongoDB.Driver.Linq.Translators.QueryableTranslator.TranslateOrderBy(OrderByExpression 节点)
public virtual List<Post> PagingNearest(Expression<Func<Post, bool>> predicate, int offset, int limit, GeoCoordinatePortable.GeoCoordinate coord)
{
return _context.Posts.AsQueryable()
.Where(predicate)
.OrderBy(x => x.Location.GeoCoordinate.GetDistanceTo(coord))
.Skip(offset)
.Take(limit)
.ToList();
}
答案 0 :(得分:1)
我通过将它转换为列表来解决此问题,然后排序,在我的情况下再次将返回的IOrderedEnumerable转换为列表。
最后一种情况.ToList()当然是可选的,它只是适合我的需要。
在我的情况下,我也用一个三元运算符的布尔值进行排序。
.ToList().OrderBy(e => e.SomeBoolean ? 0 : 1).ToList();