Словарь ASP.NET MVC2 не обновляется с помощью динамического индекса - PullRequest
1 голос
/ 11 января 2011

Я работаю в поисковой системе, которая оценивает элементы базы данных параметрически. Из-за этого я настроил класс оценки, который позволяет контроллеру управлять и возвращать оценки определенных элементов. Например, скажем, я забиваю компьютеры. Если кто-то выберет определенный объем ОЗУ в форме поиска, я хочу, чтобы совпадение было выше, чем, скажем, почти совпадение.

Класс позволяет добавлять оценки на основе идентификатора элемента базы данных в качестве индекса:

public class ScoringMechanism {
    // Dictionary that holds scores
    private Dictionary<int, int> _scores;

    public ScoringMechanism() {
        this._scores = new Dictionary<int, int>();
    }

    public AddOrUpdate(int id, int score) {
        if (_scores.ContainsKey(id)) {
            _scores[id] += score;
        } else {
            _scores.Add(id, score);
        }
    }
}

Внутри контроллера я проверяю совпадение так:

var computers = from computer in _context.Computers select computers;

foreach (Computer computer in computers) {
    if (computer.GBAmt == Request.Querystring["GB"]) {
       scores.AddOrUpdate(computer.ID, 15);
    }
}

Что я замечаю в своем коде, не могу понять: при динамическом обновлении счета через переменную computer.ID счет не обновляется. Однако когда я явно указываю идентификатор, он обновляется.

По сути,

scores.AddOrUpdate(15, 25);
работает.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...