2015-10-05 89 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;