可以嘗試這樣:
var myList = new List<string>() { "a", "1", "b", "2", "123", "cd", "12346", "657" };
var nonNumericItems = myList.Where(item => !item.Any(i => Char.IsDigit(i)))
.OrderBy(item => item);
var numericItems = myList
.Select(item => String.Join("", item.Where(Char.IsDigit)))
.Where(item => !String.IsNullOrEmpty(item))
.Select(item => Convert.ToInt32(item))
.OrderBy(item => item)
.Select(item => item.ToString());
var result = numericItems
.Union(nonNumericItems);
result.ToList()
.ForEach(Console.WriteLine);
的輸出是:
1,2,123,657,12346,A,B,CD
PS:你在這裏沒有告訴我們關於你的邏輯的任何額外的解釋String.Join("", item.Where(Char.IsDigit)
。所以,我沒有提出任何其他問題。