C # MongoDb SortBy перечисление - PullRequest
0 голосов
/ 17 апреля 2019

Есть ли способ SortBy, используя enum с драйвером 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 не упорядочен так, как я хочу, поэтому мне нужно изменить порядок.

1 Ответ

0 голосов
/ 19 апреля 2019

Обычно в Mongo Entities вы можете установить свои свойства Enum как int с украшениями в вашем POCO .. как:

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

Таким образом, он будет сохранен в MongoDB как int ... тогда вы можете отсортировать (или OrderBy с Linq) по этому полю ...

Another путь может быть ... сделать ваш запрос .. Хит .. and the Sort in MEMORY

Надеюсь, это поможет вам!

...