【问题标题】:Cast string as Guid using LinqPad使用 LinqPad 将字符串转换为 Guid
【发布时间】:2011-11-09 15:51:47
【问题描述】:

当我在 LinqPad 中运行时

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

ProductIds.Dump();

它给了我

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

我只是不知道如何正确地将它应用到 GUId 我猜

【问题讨论】:

    标签: c# linq linq-to-sql linqpad


    【解决方案1】:

    尝试使用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' 隐式转换为 'bool'”错误
    • 确保在 p.Id 和 Guid.Parse() 语句的比较之间有 ==,而不是单个 =。
    • :) 我一定是喝醉了。谢谢老兄
    • @NathanAnderson 使用 LinqPad 我收到一个错误:'System.Guid' does not contain a definition for 'Parse'
    • 尝试使用将字符串作为参数的构造函数。 msdn.microsoft.com/en-us/library/96ff78dc%28v=vs.110%29.aspx
    【解决方案2】:

    您目前有一个作业,但您想使用比较 - 使用 == 而不是 =:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 请看我对@Nathan 评论的回复
      • 试试Guid.Parse("F1FE990C-4525-4BFE-9E2C-A7AFFF0DDA1F").CompareTo(p.Id) = 0
      • 抱歉给您添麻烦了。我想我有饮酒问题:)
      【解决方案4】:

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

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

      然后

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-01
        • 2018-04-12
        相关资源
        最近更新 更多