Friday, May 30, 2008

Sắp xếp dữ liệu trong Dictionary bằng các Values

Dictionary<string, int> dict = new Dictionary<string, int>();
 
/* populate dictionary */
List<KeyValuePair<string, int>> summaryList = new List<KeyValuePair<string, int>>();
 
summaryList.AddRange(dict);
summaryList.Sort(
    delegate(KeyValuePair<string, int> kvp1, KeyValuePair<string, int> kvp2)
    {
        return Comparer<int>.Default.Compare(kvp1.Value, kvp2.Value);
    }
);

Thursday, May 8, 2008

Loại bỏ dấu tiếng Việt trong C#

Khi bạn làm việc với các dự án liên quan đến tiếng Việt, đôi khi bạn cần thực hiện loại bỏ toàn bộ dấu tiếng Việt. Ví dụ trong bảng lương của kế toán gửi cho ngân hàng trong kỳ chuyển lương qua thẻ ATM hàng tháng, bạn phải thêm một cột họ tên viết hoa không dấu của từng chủ thẻ ATM, trong trường hợp này, bạn cần phải tiến hành loại bỏ toàn bộ dấu tiếng Việt của mục họ tên. Sau đây là lớp cho phép bạn thực hiện xử lý loại bỏ dấu của tiếng Việt.
public class StringUtil
{
 private static readonly string[] VietnameseSigns = new string[]
 {
  "aAeEoOuUiIdDyY",
  "áàạảãâấầậẩẫăắằặẳẵ",
  "ÁÀẠẢÃÂẤẦẬẨẪĂẮẰẶẲẴ",
  "éèẹẻẽêếềệểễ",
  "ÉÈẸẺẼÊẾỀỆỂỄ",
  "óòọỏõôốồộổỗơớờợởỡ",
  "ÓÒỌỎÕÔỐỒỘỔỖƠỚỜỢỞỠ",
  "úùụủũưứừựửữ",
  "ÚÙỤỦŨƯỨỪỰỬỮ",
  "íìịỉĩ",
  "ÍÌỊỈĨ",
  "đ",
  "Đ",
  "ýỳỵỷỹ",
  "ÝỲỴỶỸ"
 };
 
 public static string RemoveSign4VietnameseString(string str)
 {
 
  //Tiến hành thay thế , lọc bỏ dấu cho chuỗi
  for (int i = 1; i < VietnameseSigns.Length; i++)
  {
   for (int j = 0; j < VietnameseSigns[i].Length; j++)
    str = str.Replace(VietnameseSigns[i][j], VietnameseSigns[0][i - 1]);
  }
  return str;
 }
}

Hy vọng rằng công cụ trên có thể giúp bạn thực hiện được công việc của mình.