Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对包含两个不同小数位的版本进行排序_C#_Sql_Sorting - Fatal编程技术网

C# 对包含两个不同小数位的版本进行排序

C# 对包含两个不同小数位的版本进行排序,c#,sql,sorting,C#,Sql,Sorting,目前,我从一个使用Selenium的网站上获得了发布版本,并将其存储为字符串 发布版本有14.14,14.14.4,14.15,14.15.1,14.15.2等 我需要使用C#对它们进行排序,数据库管理员需要能够使用SQL对它们进行排序。所有发布版本项当前都存储为字符串 如果这很重要的话,我会使用LINQtoSQL来完成我所有的SQL工作 用C#和SQL对它们进行排序的最佳方法是什么?作为字符串?或者我应该把它们转换成货币?如果转换它们,将使用什么数据类型?在C中,您可以将它们存储为(或至少转换

目前,我从一个使用Selenium的网站上获得了
发布版本
,并将其存储为字符串

发布版本有
14.14
14.14.4
14.15
14.15.1
14.15.2

我需要使用C#对它们进行排序,数据库管理员需要能够使用SQL对它们进行排序。所有
发布版本
项当前都存储为字符串

如果这很重要的话,我会使用LINQtoSQL来完成我所有的SQL工作

用C#和SQL对它们进行排序的最佳方法是什么?作为字符串?或者我应该把它们转换成货币?如果转换它们,将使用什么数据类型?

在C中,您可以将它们存储为(或至少转换为)
版本,该版本还支持正确的排序:

var strings = new List<string> { "14.14", "14.14.4", "14.15", "14.15.1", "14.15.2" };
var versions = strings.Select(v => Version.Parse(v)).ToList();
versions.Sort();  // or OrderBy in the LINQ query above
var strings=新列表{“14.14”、“14.14.4”、“14.15”、“14.15.1”、“14.15.2”};
var versions=strings.Select(v=>Version.Parse(v)).ToList();
versions.Sort();//或上面LINQ查询中的OrderBy

这里有一个问题显示了如何对数据库中的版本进行排序:

如果您对来回转换没有问题,那么将该版本转换为int。由于该版本最多有3个部分,只需将其转换为{0}*10000+{1}*100+{2}

,以避免同时使用C#和SQL编写排序代码,您可以开始使用固定宽度编号保存版本
014.015.001
,这样词法排序在这两个版本中都能正常工作,但显然您可能不希望或无法控制它。在C#中,您可以只提供一个自定义的IComparer。