在 C# 中将 HierarchyId 转换为十六进制字符串,获取 CSV 导出的原始 ("representation") 值
Convert HierarchyId to Hex string in C#, get raw ("representation") value for CSV export
所以...对于从 SQL 服务器数据库导出的 CSV,使用 C# 和 Entity Framework,我需要获取 HierarchyId
的原始值。
原始值在 SSMS 中看起来像这样:0x29F9DC
我的 CSV 中的输出像这样:/-25/-5/
.
CSV 是使用 StringBuilder
生成的,我实体的每一行都是通过 ToCsv
方法转换的:
return IdClassificationEc + ";" + Libelle + ";" + Complement;
其中 IdclassificationEc
是 hierarchyId
。
有或没有 ToString
,我都得到了可读的值,但没有已知的方法来获取原始的十六进制值。
使用 T-SQL,我能够使用这个在字符串上获得好的值:
CONVERT(VARCHAR, CAST(evc.ID_CLASSIFICATION_EC AS VARBINARY), 1)
请帮我解决这个令人沮丧的问题:'(
在 SQL 服务器端:
declare @hid hierarchyid = '/1/1/1/';
select
v1 = convert(varchar(1000), cast(@hid as varbinary(892)), 1), -- = 0x5AD6
v2 = convert(varchar(1000), cast(@hid as varbinary(892)), 2); -- = 5AD6
在 C# 中:
using System;
using Microsoft.SqlServer.Types;
using System.IO;
public class Program
{
public static void Main()
{
Console.WriteLine("Conversion of SqlHierarchyId to Hex string:");
var hid = SqlHierarchyId.Parse("/1/-1.12/-2.2.39/");
Console.WriteLine(HierarchyIdToHexString(hid)); // = 0x5A2C9F9D93E0
}
private static String HierarchyIdToHexString(SqlHierarchyId hid)
{
using (var ms = new MemoryStream())
using (var binWriter = new BinaryWriter(ms))
{
hid.Write(binWriter);
var byteString = BitConverter.ToString(ms.ToArray()).Replace("-","");
return String.Format("0x{0}", byteString);
}
}
}
上的工作示例
@Uranne,在 ToCsv() 中使用 HierarchyIdToHexString() 方法。
所以...对于从 SQL 服务器数据库导出的 CSV,使用 C# 和 Entity Framework,我需要获取 HierarchyId
的原始值。
原始值在 SSMS 中看起来像这样:0x29F9DC
我的 CSV 中的输出像这样:/-25/-5/
.
CSV 是使用 StringBuilder
生成的,我实体的每一行都是通过 ToCsv
方法转换的:
return IdClassificationEc + ";" + Libelle + ";" + Complement;
其中 IdclassificationEc
是 hierarchyId
。
有或没有 ToString
,我都得到了可读的值,但没有已知的方法来获取原始的十六进制值。
使用 T-SQL,我能够使用这个在字符串上获得好的值:
CONVERT(VARCHAR, CAST(evc.ID_CLASSIFICATION_EC AS VARBINARY), 1)
请帮我解决这个令人沮丧的问题:'(
在 SQL 服务器端:
declare @hid hierarchyid = '/1/1/1/';
select
v1 = convert(varchar(1000), cast(@hid as varbinary(892)), 1), -- = 0x5AD6
v2 = convert(varchar(1000), cast(@hid as varbinary(892)), 2); -- = 5AD6
在 C# 中:
using System;
using Microsoft.SqlServer.Types;
using System.IO;
public class Program
{
public static void Main()
{
Console.WriteLine("Conversion of SqlHierarchyId to Hex string:");
var hid = SqlHierarchyId.Parse("/1/-1.12/-2.2.39/");
Console.WriteLine(HierarchyIdToHexString(hid)); // = 0x5A2C9F9D93E0
}
private static String HierarchyIdToHexString(SqlHierarchyId hid)
{
using (var ms = new MemoryStream())
using (var binWriter = new BinaryWriter(ms))
{
hid.Write(binWriter);
var byteString = BitConverter.ToString(ms.ToArray()).Replace("-","");
return String.Format("0x{0}", byteString);
}
}
}
上的工作示例
@Uranne,在 ToCsv() 中使用 HierarchyIdToHexString() 方法。