c#-使用字符和数字对List <>进行排序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-使用字符和数字对List <>进行排序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1382字,纯文字阅读大概需要2分钟。
内容图文
![c#-使用字符和数字对List <>进行排序](/upload/InfoBanner/zyjiaocheng/682/891784f1a2854d9aa8ac099880b6e5e9.jpg)
我正在为公司开发的程序开发更新工具.要更新程序,我需要执行一些SQL脚本.这些脚本必须具有正确的顺序(当然).我有一个清单. SqlScriptModel具有“名称”属性,我曾用它对列表进行排序. SQL脚本名称以Programm-Version(例如:5.8.1.0)开头.目前,我的“排序”列表如下所示:
5.8.0.1 - Update Script
5.8.0.10 - Update Script
5.8.0.11 - Update Script
5.8.0.2 - Update Script
当然,5.8.0.10脚本需要在5.8.0.2脚本之后执行.
我的代码如下所示:
SqlScriptList.Sort((x, y) => string.Compare(x.Name, y.Name));
有人已经遇到了同样的问题吗?或具有有效解决方案的链接?我将非常感谢!
解决方法:
只需重命名文件,以使所有版本子字符串的长度都相同.像这样用零填充版本的最后一部分:
5.8.0.01 - Update Script
5.8.0.02 - Update Script
5.8.0.10 - Update Script
5.8.0.11 - Update Script
如果您不想这样做,则可以在代码中将版本字符串转换为数字,然后根据该数字进行排序:
string version = "5.8.0.10";
int fullVersionNumber =
version
.Split(new char[] { '.' })
.Select(int.Parse)
.Aggregate((first, second) => first * 100 + second);
// fullVersionNumber = 5080010
您可以使用以下功能:
public static int GetNumericVersion(string fileName)
{
string version = fileName.Split(new char[] { ' ' })[0];
int fullVersionNumber =
version
.Split(new char[] { '.' })
.Select(int.Parse)
.Aggregate((first, second) => first * 100 + second);
return fullVersionNumber;
}
并像这样使用它:
SqlScriptList.Sort(
(x, y) => GetNumericVersion(x.Name).CompareTo(GetNumericVersion(y.Name)));
内容总结
以上是互联网集市为您收集整理的c#-使用字符和数字对List <>进行排序全部内容,希望文章能够帮你解决c#-使用字符和数字对List <>进行排序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。