出于 UI 目的对枚举进行排序
假设我们有一个 UI,在这个 UI 中我们有一个下拉菜单。该下拉列表填充了枚举的翻译值。
Bow,我们可以按枚举的 int 值、枚举的名称以及枚举的翻译名称进行排序。
但是如果我们想要与上面提到的 3 种不同的排序呢?这样的需求如何处理?
Say we have a UI and in this UI we have a dropdown. This dropdown is filled with the translated values of an enum.
Bow, we have the possibility to sort by the int-value of the enum, by the name of the enum, and by the translated name of the enum.
But what if we want a different sorting than the 3 mentioned above. how to handle such a requirement?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
实现您自己的
IComparer
:Implement your own
IComparer
:您可以使用 Linq 扩展
OrderBy
,并执行您想要的任何比较魔法:然后将不同的排序方案包装到方法中,并根据用户首选项/输入调用正确的方法。
You can use the Linq extension
OrderBy
, and perform whatever comparison magic you want:Then wrap the different sorting alternatives into methods, and invoke the right one based on user preferences/input.
IEnumerable.OrderBy(Func, IComparer)
IEnumerable<T>.OrderBy(Func<T, TKey>, IComparer<TKey>)
使用 Linq 对 FileSystemRights 枚举进行排序并绑定到 WinForms 组合框:
Sort FileSystemRights enum using Linq and bind to WinForms comboBox:
也许您可以为 Enum 类创建一个扩展方法,如下所示:
...首先是声明......
然后在方法中...
并且您可以为不同的排序选项等向扩展方法添加不同的参数。
Perhapse you could create an extension method for the Enum class, like this:
... first the declaration...
...then in a method...
And you could add different parameters to the extension metod for different sort options etc.