按名称排序 - 西里尔字母

Order by name - cyrillic letters

我有一个方法 returns 来自存储过程的街道名称,类似这样

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

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

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();