【问题标题】:Operator '==' cannot be applied to operands of type 'string' and 'System.Guid' in MVC5 [closed]运算符'=='不能应用于MVC5中'string'和'System.Guid'类型的操作数[关闭]
【发布时间】:2017-01-19 12:15:55
【问题描述】:

您好,我收到 “运算符 '==' 不能应用于 'string' 和 'System.Guid' 类型的操作数” 下图中提到的错误。我为此错误搜索了许多解决方案,但我无法清除此错误。

UserID 是下图中提到的 User 和 UserRights 表中的 Guid。

我的代码

 public class Config
{
    public static class Forms
    {

        public static readonly Guid UserScreen = new Guid("803F9EDF-71A6-4B47-8583-6FE50ED0BC06");
        public static readonly Guid VisitorsForm = new Guid("3C93D64F-802B-4F4B-8564-6115AE73F354");
    }
    public static Guid UserID { get { return GetUserID(); } }
   private static Guid GetUserID()
    {
        string user = HttpContext.Current.Session["UserID"].ToString();
        return new Guid(user);
    }
    public static WafeERPEntities GetDb()
    {
        return new WafeERPEntities();
    }
    public static List<UserRight> GetFormRights()
    {
        return GetDb().UserRights.Where(u => u.UserID == Config.UserID).ToList();
    }
    public static UserRight GetFormRights(Guid formID)
    {
        return GetDb().UserRights.FirstOrDefault(u => u.UserScreenID == formID && u.UserID == Config.UserID);
    }
}
}

谁能帮我解决这个问题。

提前谢谢。

【问题讨论】:

  • 如果您将 Guid 与 String 进行比较,它没有理由工作,您只能使用 == 运算符比较正确的类型,而不是任何东西。还要发布带有问题的代码 sn-p,而不是完整的图像。

标签: c# asp.net-mvc-5


【解决方案1】:

您可以使用其中一种解决方案

1) 您可以使用 ToString() 作为快速解决方案。从性能的角度来看,这种方法更好:

  (u=>string.Equals(u.UsserId.Tostring()),Config.Userid, StringComparer.OrdinalIgnoreCase))

2) 您可以将 Guid 解析为另一种快速解决方案。这种方法不如以前的性能好,但如果 guid 不正确,您将在异常的帮助下得到通知:

u=>
{
    var parsedGuid;
    return Guid.Parse(Config.Userid)==Config.Userid;
}

为了避免异常,您可以使用:

u=>
{
    var parsedGuid;
    if(Guid.TryParse(Config.Userid,out parsedGuid))
        return parsedGuid u.UsserId.Tostring()==Config.Userid;
    else 
        return false;
}

3) 正确的方法。你应该改变你的数据库模型,让 userId 不在 string 中,而是在 Guid 中。换句话说,UserRight.UsserId 应该有类型 Guid

【讨论】:

  • StringComparer.OrdinalIgnoreCase 添加到string comparison
  • @MrinalKamboj 谢谢。已经完成了
  • @MichalHainc 这是“字符串类型代码”的好例子 - blog.codinghorror.com/new-programming-jargon
  • @Michal Hainc 大多数提供商都是Ok,用于在GuidString 之间进行默认转换,尤其是在它是自动生成的代码的情况下。这里错误使用==是个问题,需要改正
  • @MichalHainc 伙计们,总的来说,我同意你的观点,也有同样的看法
猜你喜欢
  • 2011-12-21
  • 2014-07-31
  • 1970-01-01
  • 2016-06-17
  • 1970-01-01
  • 2013-10-12
  • 1970-01-01
相关资源
最近更新 更多