按名称排序 - 西里尔字母

问题描述

我有一个从存储过程返回街道名称方法,就像这样

public List<NameUlici> GetAllNameUlici()
        {
            using (var con = new sqlConnection(ConnectionStringManager.GetConnectionManager()))
            {
                var model = con.Query<NameUlici>("GetNameUlici",commandType: CommandType.StoredProcedure).ToList();
                return model;
            }
        }

这是存储过程,它只返回街道名称

ALTER PROCEDURE [dbo].[GetNameUlici]
    
AS
    SELECT name,ime_1251
    FROM ULICI_KARPOS
    RETURN

然后回到控制器我去

public ActionResult GetAllStreets()
        {
            var result = dataRepo.GetAllNameUlici();
            return Json(result);
        }

然后我用这些值填充下拉列表。我得到的值是西里尔字母,所以我不确定如何按名称排序,比如 A - Z。 目前,我有这样的事情

$.getJSON(url,function (streets) {
            $("#streetNameID").append('<option></option>');
            $.each(streets,function (index,value) {
                $("#streetNameID").append('<option value="' + value.ime_1251 + '">' + value.ime_1251 + '</option>');
            });
        });

但是下拉值到处都是 - 未排序,同时降序和升序。关于如何进行的任何建议?

解决方法

您“编写”<option> 的方式非常糟糕。如果 " 内有 <ime_1251,一切都会中断...

$("#streetNameID").append(new Option(value.ime_1251,value.ime_1251));

还是。您的问题似乎是 C# 方面的……在您所有的 C# 代码中,我没有看到一些东西:排序。考虑到您使用的是存储过程,您可以对 SP 内的数据进行排序:

SELECT name,ime_1251
FROM ULICI_KARPOS
ORDER BY ime_1251
RETURN

或者你可以在C#端对数据进行排序:

var model = con.Query<NameUlici>("GetNameUlici",commandType: CommandType.StoredProcedure)
    .OrderBy(x => x.ime_1251)
    .ToList();