C# 文件(夹)名字排序-使用Sort
文件(夹)名字:abc1231,abc1232,abc12310,abc12311
我的解决办法:先按照长度排序再按照名字排序
using System;
using System.Collections.Generic;
namespace HelloWorldApplication
{
class HelloWorld
{
static void Main(string[] args)
{
List<string> lis = new List<string>();
lis.Add("abc1231");
lis.Add("abc12310");
lis.Add("abc12311");
lis.Add("abc1232");
lis.Sort((a, b) => a.Length == b.Length ? a.CompareTo(b) : a.Length.CompareTo(b.Length));
for (int i = 0; i < lis.Count; i++)
{
Console.WriteLine(lis[i]);
}
Console.Read();
}
}
}
输出结果:
扩展:使用自定义泛型
using System;
using System.Collections.Generic;
namespace HelloWorldApplication
{
class HelloWorld
{
public class myList{
public string fName { get; set; }
public string other { get; set; }="";
}
static void Main(string[] args)
{
List<myList> lis = new List<myList>();
lis.Add(new myList() {fName="abc1231"});
lis.Add(new myList() {fName="abc12310"});
lis.Add(new myList() {fName="abc12311"});
lis.Add(new myList() {fName="abc1232"});
lis.Sort((a, b) => a.fName.Length == b.fName.Length ? a.fName.CompareTo(b.fName) : a.fName.Length.CompareTo(b.fName.Length));
for (int i = 0; i < lis.Count; i++)
{
Console.WriteLine(lis[i].fName);
}
Console.Read();
}
}
}