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

时间:2013-07-10 15:40:12

标签: c# sql database

我正在尝试使用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);
        }

    }

但是,我收到错误消息“无法将类型'字符串'隐式转换为'System.guid'

任何帮助将不胜感激。感谢

5 个答案:

答案 0 :(得分:2)

看看documentation for the Guid class。有一个构造函数需要string,还有Parse静态方法

答案 1 :(得分:1)

使用

Guid.Parse()

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

where accounts.AccountGUID= "e8d82d5d"

应该是这样的:

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

答案 2 :(得分:1)

有两种方法可以做到这一点

假设所有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格式。

答案 3 :(得分:0)

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

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

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

答案 4 :(得分:0)

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
        }


   }