如何存储和排序unicode字符



我想使用Asp.net MVC和实体框架来存储和排序Unicode字符。那么,最好的方法是什么呢。机箱模型,学生模型:

public class Student
        {
            public int ID { get; set; }
            public string LastName { get; set; }
            public string FirstMidName { get; set; }
            public DateTime EnrollmentDate { get; set; }
    }

在StudentController中的索引操作:

public ActionResult Index(string sortOrder)
{
   ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
   ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date";
   var students = from s in db.Students
                  select s;
   switch (sortOrder)
   {
      case "name_desc":
         students = students.OrderByDescending(s => s.LastName);
         break;
      case "Date":
         students = students.OrderBy(s => s.EnrollmentDate);
         break;
      case "date_desc":
         students = students.OrderByDescending(s => s.EnrollmentDate);
         break;
      default:
         students = students.OrderBy(s => s.LastName);
         break;
   }
   return View(students.ToList());
}

我使用"students = students.OrderByDescending(s => s.LastName);"对学生姓名进行排序。它适用于英语,但不能像高棉语字符

那样使用Unicode

如果您已将当前区域性设置为高棉语,则应该能够在OrderByDescending方法中明确指定使用当前区域性

    OrderByDescending (s => s, StringComparer.CurrentCulture)

或者,您可以创建高棉文化并将其传递给StringComparer

var culture = new CultureInfo("km-KH");
var result = students.OrderBy(s => s, StringComparer.Create(culture, false));

看看Jon Skeet的回答:我如何让LINQ根据文化进行订购?

Entity Framework默认支持Unicode,但对于排序问题,它指的是数据库排序规则或(如果定义了列排序规则),因此请确保将数据库排序规则设置为支持Khemr字符。

最新更新