使用LinqPad将字符串转换为Guid

17

当我在 LinqPad 中运行以下代码时:

var ProductIds = from p in Products 
where p.Id = "F1FE990C-4525-4BFE-9E2C-A7AFFF0DDA1F"
select p;

ProductIds.Dump();

它给了我:

无法隐式将类型“string”转换为“System.Guid”

我不知道应该如何正确地将其转换为Guid,可能需要进行适当的强制转换。

4个回答

35

尝试使用 Guid.Parse(string guid) 静态方法。

var ProductIds = from p in Products 
where p.Id == Guid.Parse("F1FE990C-4525-4BFE-9E2C-A7AFFF0DDA1F")
select p;

ProductIds.Dump();

已经尝试了,但是出现了“无法将类型'System.Guid'隐式转换为'true'”的错误。 - Silverlight Student
请确保在比较 p.Id 和您的 Guid.Parse() 语句时使用 ==,而不是单个 = - Nathan Anderson
我一定是喝醉了。谢谢老兄。 - Silverlight Student
@NathanAnderson 在使用 LinqPad 时,我遇到了一个错误:'System.Guid' 不包含 'Parse' 的定义 - Ravi Ram
尝试使用接受字符串参数的构造函数。http://msdn.microsoft.com/en-us/library/96ff78dc%28v=vs.110%29.aspx - Nathan Anderson

1

您目前有一个任务,但是您想要进行比较-请使用==而不是=

var ProductIds = from p in Products 
                 where p.Id == Guid.Parse("F1FE990C-4525-4BFE-9E2C-A7AFFF0DDA1F")
                 select p;

0

您还可以使用以下方法来设置一个变量:

Guid guid = new Guid ("F1FE990C-4525-4BFE-9E2C-A7AFFF0DDA1F");

然后

var ProductIds = from p in Products
where p.Id == guid
select p;

ProductIds.Dump();

0

你不能强制转换它,你必须像这样解析它:

where p.Id = Guid.Parse("F1FE990C-4525-4BFE-9E2C-A7AFFF0DDA1F");

请查看我对@Nathan评论的回复。 - Silverlight Student
所以尝试 Guid.Parse("F1FE990C-4525-4BFE-9E2C-A7AFFF0DDA1F").CompareTo(p.Id) = 0 - Fischermaen
1
抱歉给您带来麻烦了。我想我有喝酒的问题 :) - Silverlight Student

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接