Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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#_Linq - Fatal编程技术网

C# 如何获取版本字符串的最大值

C# 如何获取版本字符串的最大值,c#,linq,C#,Linq,如何使用c和LINQ从字符串集合中获取最大值? 例如: List<String> lst = new List<String> { "1.0.0", "1.0.2", "1.0.15", "1.1.0" }; 示例1:-比较1.0.0和1.1.0,最大版本为1.1.0。 示例2:-比较1.0.2和1.0.15,最大版本为1.0.15。 示例3:-比较1.0.0和1.0.2,最大的版本是1.0.2。在您给出的示例中,您可以将它们按字符串排序。但我强烈建议您不要这样做,否则

如何使用c和LINQ从字符串集合中获取最大值? 例如:

List<String> lst = new List<String> { "1.0.0", "1.0.2", "1.0.15", "1.1.0" };
示例1:-比较1.0.0和1.1.0,最大版本为1.1.0。 示例2:-比较1.0.2和1.0.15,最大版本为1.0.15。
示例3:-比较1.0.0和1.0.2,最大的版本是1.0.2。

在您给出的示例中,您可以将它们按字符串排序。但我强烈建议您不要这样做,否则11.0.0将被视为早于2.0.0

相反,我建议创建一个具有主/次/补丁值的版本类。这可以以一种明显的方式实现IComparable。解析所有字符串以创建一个列表,然后可以在列表中找到最大值或对整个列表进行排序。如果需要,您甚至可以只使用该类,尽管它支持四个部分,而您似乎只需要三个部分。如果您不介意它支持比您需要的更多的部件,那么它肯定比编写自己的部件要简单

List<String> list = new List<String> { "1.0.0", "1.0.2", "1.1.0" };
List<Version> versions = list.Select(x => Version.Parse(x)).ToList();
Version maxVersion = versions.Max();
将值解析为版本对象比将其解析为字符串更容易处理。例如,您可以通过主版本号,甚至是1.0.5之后的任何内容或任何您想做的事情来进行简单的筛选。一般来说,最好尽早将字符串解析为表示正在处理的数据的类型,并尽可能晚地重新格式化以供显示。这适用于字符串、数字和所有内容

String test = ""1.0.0", "1.0.2", "1.1.0"";
String[] testArray = test.split(", ");

int max = Integer.MIN_VALUE, maxIndex = 0;

for (int i = 0; i < testArray.length; i++) {
     if (Integer.parseInt(testArray[i]) > max) {
         max = Integer.parseInt(testArray[i]);
         maxIndex = i;
     }
}
希望这能帮到你。

考虑使用.Net版本

您可以从字符串创建它,并且它已经以您可能需要的方式处理比较

    Version v1 = new Version("1.2.3.4");
    Version v2 = new Version("1.3.0");
    Console.WriteLine(v2>v1);
在您的情况下,使用Linq,您可以

    List<String> lst = new List<String> { "1.0.0", "1.0.2", "1.0.15", "1.1.0" };

    Version maxVersion = lst.Select(s=> new Version(s)).Max();
    Console.WriteLine(maxVersion);

我想下面的问题会对你有所帮助:除了它们是简单的谷歌搜索的多个副本之外。。。您尝试过什么?您希望解析1.0.0做什么?这些值根本不是整数。另外,看起来您编写的是Java而不是C。@HowardTeoh:注意,您甚至可以稍微简化一下:Version maxVersion=lst.Maxs=>Version.Parses;。
    List<String> lst = new List<String> { "1.0.0", "1.0.2", "1.0.15", "1.1.0" };

    Version maxVersion = lst.Select(s=> new Version(s)).Max();
    Console.WriteLine(maxVersion);
List<string> lst = new List<string> { "1.0.0", "1.0.2", "1.0.15", "1.1.0" };
var value = lst.Max(x => new Version(x));

Result=1.1.0