У меня есть следующий код t-sql, который я преобразовал в c #.
DECLARE @guidRegular UNIQUEIDENTIFIER, @dtmNow DATETIME
SELECT @guidRegular = '{5bf8e554-8dbc-4008-9d48-5c6e0a4d28d7}'
SELECT @dtmNow = '2012-02-09 18:31:38'
print (CAST(CAST(@guidRegular AS BINARY(10)) + CAST(@dtmNow AS BINARY(6)) AS UNIQUEIDENTIFIER))
Когда я выполняю версию кода .net (с использованием того же Guid и DateTime), я получаю другое руководство?Похоже, это как-то связано с элементом datetime, может кто-нибудь помочь?
c # код расширения:
using system.data.linq;
...
...
public static class GuidExtensions
{
public static Guid ToNewModifiedGuid(this Guid guid)
{
var dateTime = new DateTime(2012,02,09,18,31,38);
var guidBinary = new Binary(guid.ToByteArray().Take(10).ToArray());
var dateBinary = new Binary(BitConverter.GetBytes(dateTime.ToBinary()).ToArray().Take(6).ToArray());
var bytes = new byte[guidBinary.Length + dateBinary.Length];
Buffer.BlockCopy(guidBinary.ToArray(), 0, bytes, 0, guidBinary.ToArray().Length);
Buffer.BlockCopy(dateBinary.ToArray(), 0, bytes, guidBinary.ToArray().Length, dateBinary.ToArray().Length);
return new Guid(bytes);
}
}