转换为Guid但接收无法转换为int错误

时间:2015-10-05 14:40:07

标签: asp.net-mvc string controller guid

我正在尝试使用linq语句将userName从我的数据库中拉出来获取字符串。但是我不断收到错误。

这是我得到的错误:

  

无法隐式转换'字符串'到' int'

这很奇怪,因为我试图将它转换为Guid,而不是int。

这是代码:

string ticketChange = "The following change(s) have been made by " + db.Users.Where(u => u.UserId == new Guid["LoggedUserID"]).First().FullName + Environment.NewLine;

我收到了" loggedUserID"目前是一个字符串。

这是我在用户登录时定义LoggedUserID的代码。(我知道这不是执行此操作的最佳方式,我将来会更改,但我需要尽快修复)。它从数据库中提取出一个quid的userID,并将其保存为字符串。

Session["LoggedUserID"] = v.UserId.ToString();

我也尝试过:

Guid.NewGuid(["LoggedUserID"])

但NewGuid没有带任何参数的重载方法。

u.UserID是Guid。那么在这种情况下如何将字符串转换为Guid才能生效呢?

2 个答案:

答案 0 :(得分:0)

我不完全确定你在这里想要完成什么。应该是什么“LoggedUserId”?

错误与new Guid["LoggedUserId"]有关。 Guid不是字典,所以我不确定为什么你认为你可以索引它或者它会隐含地命名为“LoggedUserId”的密钥,即使你可以。您可以将某些内容传递给构造函数:new Guid(...),但是,传递的值必须是可以转换为Guid的内容,而“LoggedUserId”则不是。{/ p>

答案 1 :(得分:0)

在Chris的帮助下,这就是最终的工作:

Guid g = Guid.Parse(Session["LoggedUserID"] as string);

string ticketChange = "The following change(s) have been made by "  + db.Users.Where(u => u.UserId == g).First().FullName + Environment.NewLine;