我正在尝试使用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'
任何帮助将不胜感激。感谢
答案 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
}
}