$ sort mongodb中只允许使用字段

时间:2018-03-04 13:09:44

标签: c# mongodb asp.net-core-2.0 mongodb-.net-driver

我正在尝试获取最近的记录,如下面但排序操作抱怨表达式不允许。如何在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();
}

1 个答案:

答案 0 :(得分:1)

我通过将它转换为列表来解决此问题,然后排序,在我的情况下再次将返回的IOrderedEnumerable转换为列表。

最后一种情况.ToList()当然是可选的,它只是适合我的需要。

在我的情况下,我也用一个三元运算符的布尔值进行排序。

.ToList().OrderBy(e => e.SomeBoolean ? 0 : 1).ToList();