正在将字符串转换为System.guid c#

本文关键字:System guid 转换 字符串 | 更新日期: 2023-09-27 18:21:55

我正在尝试使用sql和c#根据帐户GUID检索客户端的名称。

static DataClasses1DataContext dbDataClasses = new DataClasses1DataContext();
    static void Main(string[] args)
    {
        var accountList = from accounts in dbDataClasses.ACCOUNTs where   accounts.AccountGUID.ToString() = "e8d82d5d-b7bd-4b24-a7fe-ef050921e960"
                          select accounts;
        foreach (ACCOUNT temp in accountList)
        {
            Console.WriteLine("Account Name: " + temp.Name + " Account GUID: " + temp.AccountGUID);
        }
    }

然而,我收到一个错误,说"无法将类型'string'隐式转换为'System.guid'

如有任何帮助,我们将不胜感激。感谢

正在将字符串转换为System.guid c#

查看Guid类的文档。有一个构造函数接受string,还有Parse静态方法

使用

Guid.Parse()

Guid.ParseExact()在您的字符串中使用它之前:

where accounts.AccountGUID= "e8d82d5d"

应该是这样的:

 where accounts.AccountGUID= Guid.Parse("e8d82d5d")

有两种方法

假设所有Id都是有效格式

Guid accountId = Guid.Parse(accountIdString);

假设您的accountIdString始终是经过验证的格式,如果不是,它将抛出一个异常

假设Id的格式可能无效

Guid accountId;
bool parseCheck = Guid.TryParse(accountIdString, out accountId);

将尝试解析您的accountIdString,并根据成功与否向parseCheck返回true或false。如果成功,它还会将解析的Guid存储为accountId

使用哪一个取决于您是否知道每个Id都是有效的Guid格式。

static DataClasses1DataContext dbDataClasses = new DataClasses1DataContext();
    static void Main(string[] args)
    {
        Guid someGuid;
        if(Guid.TryParse("e8d82d5d", out someGuid))
        {
             var accountList = from accounts in dbDataClasses.ACCOUNTs where accounts.AccountGUID= someGuid
                          select accounts;
            foreach (ACCOUNT temp in accountList)
            {
                 Console.WriteLine("Account Name: " + temp.Name + " Account GUID: " + temp.AccountGUID);
            }
        }
        else
        {
            //error handle
        }

   }

在与字符串进行比较之前,需要将Guid转换为字符串:

var accountList = from accounts in dbDataClasses.ACCOUNTs where accounts.AccountGUID.ToString()== "e8d82d5d"

但是,"e8d82d5d"不是guid,因此您永远不会看到此查询的任何结果。