2010-09-20 84 views
0

我使用的是試圖找到一個匹配的唯一標識符(GUID)的查詢,如不支持Linq-To-Sql方法?

var myUsers = from u in table 
       where u.UniqueIdentifierId == MyClass.GetCurrentUserId() 
       select u; 

這引發了不支持的方法錯誤我的自定義功能。我記下它做到這一點

string guid = MyClass.GetCurrentUserId().ToString(); 

where u.UniqueIdentifierId.ToString() == guid 

而且這個工程。我想知道是否有任何其他解決方法不需要創建臨時變量。謝謝。

+0

張貼GetCurrentUserId – Nix 2010-09-20 19:35:34

回答

3

你不能在查詢中調用它,因爲LINQ to SQL不能翻譯這個。它試圖在SQL調用中轉換它。你必須做的是在LINQ查詢之外調用此方法,如下所示:

var guid = MyClass.GetCurrentUserId(); 

var myUsers = 
    from u in table 
    where u.UniqueIdentifierId == guid 
    select u; 
+0

您peusdo代碼這是正確的,但它仍然需要臨時變量。我正在尋找任何替代品。顯然沒有其他解決方案? – 2010-09-20 17:48:32

1

你試過了嗎?

var myUsers = from u in table 
      where u.UniqueIdentifierId == MyClass.GetCurrentUserId().ToString() 
      select u; 

這將迫使LINQ to SQL中使用字符串比較(這就是爲什麼第二個工作)

+0

沒有該版本不起作用。 – 2010-09-20 17:45:42

+0

要清楚,它是方法調用 - 不是字符串比較是問題。 – 2010-09-20 17:46:44