我有2个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?
答案 0 :(得分:2)
所有Guids都具有相同的长度。您也可以使用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首先出现 如果你改变&#34; 43d0&#34;到&#34; 45d0&#34; g1将首先出现 这不是你需要的吗?