我有以下字符串列表
var strTest = new List<string> { "B2", "B1", "B10", "B3" };
Run Code Online (Sandbox Code Playgroud)
我想将它们排序如下“B1,B2,B3,B10”。
如果我使用 LINQ OrderBy,它会以“B1、B10、B2、B3”的方式排序
请帮忙。这是我的代码。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SortingDemo
{
class Program
{
static void Main(string[] args)
{
var strTest = new List<string> { "B2", "B1", "B10", "B3" };
var sort = strTest.OrderBy(x => x);
var sortedStr = string.Join(",", sort);
Console.WriteLine(sortedStr);
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
尝试这个:
var strTest = new List<string> { "B1", "B2", "B3", "B10" };
strTest.Sort((s1, s2) =>
{
string pattern = "([A-Za-z])([0-9]+)";
string h1 = Regex.Match(s1, pattern).Groups[1].Value;
string h2 = Regex.Match(s2, pattern).Groups[1].Value;
if (h1 != h2)
return h1.CompareTo(h2);
string t1 = Regex.Match(s1, pattern).Groups[2].Value;
string t2 = Regex.Match(s2, pattern).Groups[2].Value;
return int.Parse(t1).CompareTo(int.Parse(t2));
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8666 次 |
| 最近记录: |