我想使用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);
"对学生姓名进行排序。它适用于英语,但不能像高棉语字符
如果您已将当前区域性设置为高棉语,则应该能够在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字符。