2014-04-21 93 views
1

我想使用Asp.net MVC和實體框架存儲和排序Unicode字符。那麼做到這一點的最好方法是什麼? 我箱子模型,學生模型:如何存儲和排序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,如高棉字符

+2

你嘗試過什麼這麼發R'對Unicode的支持通常內置於.NET和(ASP.NET MVC中),你有什麼困難? –

+0

我使用「students = students.OrderByDescending(s => s.LastName);」分類學生姓名。它適用於英文,但不能像高棉字符那樣工作。 – user3555183

+0

編輯問題通常比在評論中添加相關信息更好。所以,告訴我們'學生'包含什麼,結果是什麼,以及你的期望。如果你想快速而且很好的回答,花點時間寫下一個好問題是非常值得的:https://msmvps.com/blogs/jon_skeet/archive/2010/08/29/writing-the-perfect-question.aspx –

回答

0

默認情況下,實體框架支持Unicode,但對於排序中的問題,則指您的數據庫整理或(列整理,如果您定義的話)所以請確保您的數據庫整理已設置爲支持Khemr字符。

2

如果您設置當前的文化高棉,你應該能夠指定要明確使用當前文化在OrderByDescending方法

OrderByDescending (s => s, StringComparer.CurrentCulture) 

或者,您也可以創建一個高棉文化,並將它傳遞到StringComparer

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

請參閱從喬恩斯基特這樣的回答:How do I get LINQ to order according to culture?