2013-05-09 63 views
5

我使用 Dynamic Linq library不兼容,且有 Source code and basic docu和的NuGet版本操作 '==' 與操作數類型「的Guid '的Guid' 使用DynamicExpression.ParseLambda <T, bool>

PM>安裝,包裝DynamicLINQ

我試圖構建涉及的GUID

我已經用字符串"Id == @0"試圖where子句。 參數陣列僅僅是一個object[]與值(Guid xxxx

var whereClauseSB = BuildLogicalKeyWhereClause2(entity, logicalKey); //build string 
    var parms = BuildParamArray(entity, logicalKey); // object[] 
    var whereLambda = Ofsi.Bos.Core.DynamicExpression.ParseLambda<T, bool>(whereClauseSB.ToString(),parms); //parse 

一個異常在DynamicExpression.ParseLambda拋出

算 '==' 與操作數類型 '的Guid' 和「不兼容的Guid 「

  • 我也試圖與GUID和字符串。(失敗)
  • 我試過並且「Id = @ 0」(失敗)。
  • 字符串==字符串作品,一樣的Int32 == INT32但不是的Guid = = GUID不

任何想法?

+0

或許有在代碼中的錯誤爲'Guid'注意到有自己的文件中明確的支持。 – user7116 2013-05-09 16:37:25

回答

6

嘗試使用Equals方法而不是==運營商在你的字符串:

"Id.Equals(@0)" 
+0

ObjectDirectoryId.Equals(@ 0)&& ObjectId == @ 1 && CultureName == @ 2與匹配對象[]剛被解析。 :-)一旦測試完成,我會標記爲正確的答案,但看起來不錯。謝謝pswg – 2013-05-09 16:58:05

+0

這是非常好的,但我有一個Nullable Guid的問題。我得到這個異常 'System.Guid'類型的表達式不能用於方法'布爾等於(System.Object)'的類型'System.Object'的參數' – 2016-10-30 13:04:57

+0

@WahidBitar我猜你有'MyGuid.Equals null)'或'MyGuid.Equals(@ 0)',並且您傳遞'null'參數爲''0'。無論哪種情況,確保你使用的是'(Guid?)null'或'default(Guid?)'而不是'null'。 – 2016-10-30 14:08:49