有什么办法让SortBy
使用枚举与MongoDB驱动程序?我正在尝试这种方式,但似乎不可能使用与LINQ相同的方法。
internal static readonly Dictionary<VehicleAvailabilityStatus, int> enumOrder =
new Dictionary<VehicleAvailabilityStatus, int>
{
{VehicleAvailabilityStatus.Available, 1},
{VehicleAvailabilityStatus.Reserved, 2},
{VehicleAvailabilityStatus.NotAvailable, 3},
};
public async Task<VehicleSearchResult> Search()
{
var vehicleCollection = DbContext.GetCollection<Vehicle>();
var fb = new FilterDefinitionBuilder<Vehicle>();
var filter = fb.Empty;
var result = await vehicleCollection.Find(filter).SortBy(x => enumOrder[x.AvailabilityStatus]).ToListAsync();
return new VehicleSearchResult(result);
}
Enum没有按我的意愿订购,所以我需要更改订单。
通常在Mongo实体中,您可以将您的枚举属性设置为带有POCO中装饰的int ..如:
[BsonRepresentation(BsonType.Int32)]
public AvailabilityStatus AvailabilityStatus{ get; set; }
因此它将作为int存储在MongoDB中...然后您可以通过此字段对Sort(或使用Linq的OrderBy)进行排序...
Another
方式可以...做你的查询..打它.. and the Sort in MEMORY
希望它能帮到你!