2009-08-24 32 views
10

Cách dễ nhất để có được truy vấn LINQ (từ cơ sở dữ liệu SQL - điều đó có quan trọng không?) Để sắp xếp chuỗi tự nhiên?LINQ và thứ tự sắp xếp tự nhiên

Ví dụ, tôi đang nhận được những kết quả này:

  • Dự án 1
  • Dự án 10
  • Dự án 2

Những gì tôi muốn là để xem là thế này:

  • Project 1
  • Dự án 2
  • Dự án 10

Truy vấn Tôi đang sử dụng là:

return from p in dataContext.Projects 
    orderby p.Name 
    select p; 
+0

"Đương nhiên" là chủ quan. Bạn có thể mô tả những gì bạn có ý nghĩa cụ thể hơn không? – StingyJack

+0

@StingyJack - Theo thứ tự sắp xếp của con người, không phải thứ tự sắp xếp máy tính. – Kieron

+1

HA - Thứ tự sắp xếp "Human". Bạn có nghĩa là thứ tự từ điển Latin, không phân biệt chữ hoa chữ thường? Bạn có ID cho các dự án này không? – StingyJack

Trả lời

9

Không có cách nào tích hợp để thực hiện điều này bằng cách sử dụng khuôn khổ NET nhưng tôi sẽ đề nghị bạn đọc Natural Sorting in C# để thảo luận về chủ đề và triển khai nguồn mở.

0

Tôi chỉ trễ một vài năm cho bữa tiệc, nhưng tôi chỉ đang cố gắng giải quyết một vấn đề tương tự và điều này làm việc cho tôi. Hy vọng người khác thấy điều này hữu ích.

Giả sử bạn có dây của bạn trong một danh sách, hãy thử một cái gì đó như thế này:

List<string> projects = new List<string> 
{ 
    "Project 1", 
    "Project 10", 
    "Project 2" 
}; 
//Sort by a substring of the string value which omits the non-numeric characters 
IEnumerable<string> sorted = projects.OrderBy(p => p.Substring(p.IndexOf(' ') + 2, p.Length - (p.IndexOf(' ') + 2))); 
Các vấn đề liên quan