按降序C#对字符串列表进行自然排序

编程入门 行业动态 更新时间:2024-10-26 22:25:39
本文介绍了按降序C#对字符串列表进行自然排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我想问一下如何使用List<string>进行排序>自然排序比较器库.

I would like to ask how to sort a List<string> in descending order using the Natural Sort Comparer library.

我想问一下您是否有人使用过这个库 www.codeproject/Articles/22517/Natural-Sort-比较器 对List<string>进行排序?

I would like to ask if you someone have use this library www.codeproject/Articles/22517/Natural-Sort-Comparer to sort a List<string>?

这是升序的代码段

public List<string> contents = new List<string>{ "a,b,c,d,e,f" }; public void sorting() { using (NaturalSortComparer comparer = new NaturalSortComparer()) { contents.Sort(comparer); } }

我可以使其按升序进行排序,但不能按降序进行排序.

I'm able to make it work to sort as ascending, but not descending.

有什么想法吗?

推荐答案

让我们实现一个简单的扩展方法 :

Let's implement a simple extension method:

public static partial class ComparerExtensions { public static IComparer<T> Reverse<T>(this IComparer<T> comparer) { if (null == comparer) throw new ArgumentNullException(nameof(comparer)); return Comparer<T>.Create((left, right) => comparer.Compare(right, left)); } }

然后,您可以反转任意一个任何比较器(ICompare<T>):

Then you can reverse any comparer (ICompare<T>) you like:

MyList.Sort(YourCustomComparer.Reverse());

在您的情况下(比较器实现IDisposable有点奇怪的实现):

In your case (a bit strange implmentation with comparer implementing IDisposable):

using (var naturalComparer = new NaturalComparer()) { contents.Sort(naturalComparer.Reverse()); }

对于 C#4.0 或更早的版本(不具有Comparer<T>.Create),我们可以实现以下扩展方法:

In case of C# 4.0 or earlier version (which doesn't have Comparer<T>.Create) we can implement the extension method like this:

public static partial class ComparerExtensions { private sealed class ReversedComparer<T> : IComparer<T> { private readonly IComparer<T> m_Comparer; public ReversedComparer(IComparer<T> comparer) { m_Comparer = comparer; } public int Compare(T x, T y) { return m_Comparer.Compare(y, x); } } public static IComparer<T> Reverse<T>(this IComparer<T> comparer) { if (null == comparer) throw new ArgumentNullException(nameof(comparer)); return new ReversedComparer<T>(comparer); } }

更多推荐

按降序C#对字符串列表进行自然排序

本文发布于:2023-10-18 03:24:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1502938.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:字符串   自然   降序   列表

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!