如何将两个GUID排序为最低优先级
本文关键字:排序 GUID 优先级 两个 | 更新日期: 2023-09-27 18:20:01
我有两个GUID-guid1&guid2.我想把它们组合成一个guid,先订购最低的一个。
所以我会做:
if(Guid1.Length != Guid2.Length)
{
if (Guid1.Length > Guid2.Length)
return Guid2 + Guid1;
else
return Guid1 + Guid2;
}
else
{
var isDiff = true;
var index = Guid1.Length - 1;
while(isDiff)
{
if (index < 0) // same guids
return Guid1 + Guid2;
if(Guid1[index] == Guid2[index])
{
index--;
}
else
{
// Here stuck
}
}
}
在注释部分,我想检查每个字符是数字还是字母,找出哪个是最低的,然后连接并首先返回具有最低值的字符串。
示例:
guid1="ab12";guid2="a21c";
因此,我认为每个字符串都可以转换为ASCII等价字符,然后找到最低值。
例如,返回的字符串为:
guid1+guid2="ab12a21c"
因为第二个字符的十进制值是32(对于数字2)和98(对于b)。
这是最好的方法吗?如果是,我如何在c#中转换为ASCII?
所有Guid都具有相同的长度。您也可以使用CompareTo方法,如下例所示。
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Guid g1 = Guid.Parse("c47632a3-274b-44d0-93df-f9626a033a6f");
Guid g2 = Guid.Parse("c47632a3-274b-43d0-93df-f9626a033a6f");
Console.WriteLine(g1);
Console.WriteLine(g2);
Console.WriteLine(GetResult(g1,g2));
Console.ReadLine();
}
public static string GetResult(Guid Guid1, Guid Guid2)
{
return Guid1.CompareTo(Guid2) < 0 ? Guid1.ToString() + Guid2.ToString() : Guid2.ToString() + Guid1.ToString();
}
}
}
在上面的例子中,g2是第一位的
如果将"43d0"更改为"45d0",g1将优先出现
这不是你需要的吗?