Расчет ранга с драйвером MongoDB и C # - PullRequest
0 голосов
/ 04 августа 2011

Я пытаюсь отобразить рейтинг поиска вместе с результатами, используя MongoDB и драйвер C # на веб-сайте MVC. Моя цель - отобразить сетку примерно так:

  1. Это результат один
  2. Это результат два
  3. Это результат три

Моя модель:

public class Product
{
    [BsonId]
    public string Id { get; set; }

    public string Name { get; set; }

    public int Rank { get; set; }
}

Мой код поиска из уровня хранилища выглядит так:

    public IList<TEntity> Find<TEntity>(Expression<Func<TEntity, bool>> criteria) where TEntity : class
    {
        return this.GetQuery<TEntity>().AsQueryable().Where(criteria).ToList<TEntity>();
    }

Мой контроллер выглядит так:

    public ActionResult Index(string query)
    {
        var model = new SearchModel();

        model.Results = this.Repository.Find<Product>(x => x.Name == “some query”)
          .OrderBy(model.GridSortOptions.Column, model.GridSortOptions.Direction)
          .AsPagination(1, 25);

        return View(model);
    }

Команда Mongo.Find должна заполнить модель каждой записью и вычислить ранг (1, 2, 3 и т. Д.).

Как мне это сделать, используя драйвер C #? Я также использую провайдера беглого linq.

1 Ответ

1 голос
/ 04 августа 2011

В mongodb нет функции Rank , поэтому драйвер также не поддерживает ее. Но я думаю, что это не проблема, потому что вы можете построить ряд строк на стороне клиента, когда вы загрузили данные или когда вы будете отображать сетку.

var pagingSkip = 1;
model.Results = this.Repository.Find<Product>(x => x.Name == “some query”)
   .OrderBy(model.GridSortOptions.Column, model.GridSortOptions.Direction)
   .AsPagination(pagingStart, 25);

foreach(var item in model.Results)
{
  item.Rank = pagingSkip + 1;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...