2015-10-05 63 views
0

我想用一个linq语句将一个userName从我的数据库中拉出一个字符串。但是我不断收到错误。转换为Guid,但接收不能转换为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的代码(我知道这不是执行此操作的最佳方式,我将在未来进行更改,但我需要尽快修复此问题)。它会拉出数据库中的用户ID并将其保存为字符串。

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

我也曾尝试:

Guid.NewGuid(["LoggedUserID"]) 

但对于NewGuid可以接收任意参数没有重载方法。

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

回答

0

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

错误与new Guid["LoggedUserId"]相关。 A Guid不是一本字典,所以我不确定为什么你认为你可以索引它,或者即使你可以隐含一个名为“LoggedUserId”的密钥。你可能传递给构造函数:new Guid(...),但是,传递的值必须是可以转换为Guid,其中“LoggedUserId”不是。

+0

嗨克里斯。我更新了我的问题以包含LoggedUserID为 – djblois

+0

然后,您需要执行类似'new Guid(Session [“LoggedUserID”])''的操作。然而,这是非常脆弱的,所以你应该把它包装在try-catch块中,并处理会话变量为空或者由于某种原因非标准的场景。 –

0

随着克里斯的帮助,这是结束了工作:

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;