2013-01-02 31 views
1

我正在編寫一個L2E查詢來比較兩個GUID值。它根本不允許直接比較,而且.ToString()方法不允許在L2E查詢中使用。我們做到了這一點如何比較Linq中的兩個GUID到實體

+1

嘗試[此](http://stackoverflow.com/questions/1765423/problem-getting-guid-string-value-in-linq-實體查詢)使用L2E和L2O的組合 – Tilak

+0

我認爲在這個例子中做它的方式不會爲我工作..我的查詢是比較GUID在哪裏條件。 – Nirman

+1

您需要獲得等效的字符串表示形式(格式相同),然後進行字符串比較。對於GUID在EF中的字符串,示例將有所幫助。對於GUID在程序中的字符串,你可以使用'.ToString'或者你可能需要一些修改(取決於內部guid格式的差異) – Tilak

回答

7

我不知道這是否適用於你的情況,但我發現,我可以在Linq中使用Guid.CompareTo方法,並將其正確地轉換爲SQL。

documentQuery.Where(s => s.DocumentGuid.CompareTo(MyGuidVariable) > 0); 

這將產生以下SQL:

AND ([Extent1].[DocumentGuid] > @p__linq__1) 
+0

感謝您節省了一天的時間。經過幾個小時的調試,我終於可以使我的查詢工作。先生,你應該得到一塊餅乾。 – ZipionLive

+0

這是互聯網上唯一可以找到這個正確答案的地方。 – AyCabron

-1

你需要比較兩個GUID的字符串represantation參數

string var1=Convert.ToString(GuidParam1); 
string var2=Convert.ToString(GuidParam2) 

然後比較這些字符串值

if(var1.CompareTo(var2)==0) 
+0

它給出了「非靜態方法需要一個目標」的錯誤 – Nirman

+0

你可以請你發佈你的代碼,所以它會明確提供幫助 – Cris