C#MongoDb SortBy枚举

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

有什么办法让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没有按我的意愿订购,所以我需要更改订单。

c# .net-core mongodb-.net-driver
1个回答
0
投票

通常在Mongo实体中,您可以将您的枚举属性设置为带有POCO中装饰的int ..如:

 [BsonRepresentation(BsonType.Int32)]
public AvailabilityStatus AvailabilityStatus{ get; set; }

因此它将作为int存储在MongoDB中...然后您可以通过此字段对Sort(或使用Linq的OrderBy)进行排序...

Another方式可以...做你的查询..打它.. and the Sort in MEMORY

希望它能帮到你!

© www.soinside.com 2019 - 2024. All rights reserved.