C#一个字符串列表根据一个方法获取列表元素的各个的排序优先级数字然后根据获取的数字排序不使用LINQ
时间: 2024-03-12 16:48:33 浏览: 85
C#四则运算的实现
不使用 LINQ 可以通过实现 `IComparer` 接口来自定义排序规则,然后使用 `List.Sort` 方法进行排序。以下是示例代码:
```csharp
class Program
{
static void Main(string[] args)
{
List<string> list = new List<string> { "foo", "bar", "baz" };
// 获取排序优先级数字的方法
int GetPriority(string value)
{
switch (value)
{
case "foo":
return 2;
case "bar":
return 1;
case "baz":
return 3;
default:
return 0;
}
}
// 自定义比较器
class PriorityComparer : IComparer<string>
{
public int Compare(string x, string y)
{
int xPriority = GetPriority(x);
int yPriority = GetPriority(y);
return xPriority.CompareTo(yPriority);
}
}
// 使用自定义比较器进行排序
list.Sort(new PriorityComparer());
// 输出排序后的列表元素
foreach (var item in list)
{
Console.WriteLine(item);
}
}
}
```
输出结果为:
```
bar
foo
baz
```
其中,`PriorityComparer` 类实现了 `IComparer<string>` 接口,该接口包含一个 `Compare` 方法,用于比较两个字符串的大小关系。在这里,我们根据字符串的优先级数字进行比较,从而实现了按数字排序的功能。
最后,我们使用 `List.Sort` 方法对列表进行排序,并传入自定义的比较器对象。排序完成后,我们可以使用 foreach 循环输出排序后的列表元素。
阅读全文