2016-11-13 20 views
0

我試圖得到一個字符串列的最大諸如結束 - A1 A2 A3 ...LINQ的 - 得到的字符串的最大與整數

但當最大數量爲10或更高 - 的linq返回a9作爲最大值。爲什麼?

我該如何解決這個問題?

的代碼 -

from d in db.Documents.OrderByDescending(d => d.Number) 
Where (.....) 
Select d.Number) 
.FirstOrDefault(); 

提前感謝!

+4

'1 < 9' ==>'A10 Ofiris

+0

輸入字符串 –

回答

2

你不能正常LINQ做什麼,如果你想與字母數字值進行比較,你應該做這樣的事情,

static void Main(string[] args) 
     { 
      List<string> vals = new List<string>(); 
      vals.Add("a1"); 
      vals.Add("a11"); 
      vals.Add("a41"); 
      vals.Add("a13"); 
      vals.Add("a12"); 
      vals.Add("a9"); 
      var result = vals.OrderByDescending(x => orderNumbers(x)); 
     } 
     public static string orderNumbers(string input) 
     { 
      return Regex.Replace(input, "[0-9]+", match => match.Value.PadLeft(10, '0')); 
     } 
+0

是否有助於解決您的問題? – Sajeetharan

+0

存在問題:它會引發異常:「notsupportedexception」。該代碼可以很好地適用於您的示例,但在我的示例中卻不適用。 var result = documents.OrderByDecending(x => ordernumbers(x))。其中(x.id == user.id).max(); –

+0

可能你需要投 – Sajeetharan