У меня есть следующее действие контроллера:
public JsonResult GetInvestors(int bank)
{
var investors = _context.Investors
.Where(i => i.BankNumber == bank)
.Select(i => new { InvestorId = i.InvestorId.ToString(), InvestorName = i.InvestorName + " (" + i.BankNumber + ")" })
.OrderBy(i => i.InvestorName)
.ToDictionary(i => i.InvestorId, i => i.InvestorName);
return Json(investors, JsonRequestBehavior.AllowGet);
}
И следующий javascript для вызова этого действия, которое сейчас просто запускает отладчик, чтобы я мог просмотреть результат:
function getInvestors(bank)
{
$.ajax
({
url: "/InvestorDetail/GetInvestors",
type: "POST",
data: { bank: bank },
dataType: "json",
success: function (returnedData) { debugger; }
});
}
Если я смотрю investors
в действии контроллера, оно сортируется по имени инвестора, что я и хочу. Однако, когда я попадаю в отладчик javascript и наблюдаю returnedData
, данные поступают отсортированными по идентификатору инвестора.
Альтернативно, если я помещу OrderBy после ToDictionary и order by Value, в отладчике javascript jsonСтруктура результата отличается, но сортируется по имени инвестора, как я хочу.
Почему порядок сортировки изменяется при возврате из словаря?
Спасибо.