Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 操作员'==';与操作数类型不兼容';Guid';和';Guid';使用DynamicExpression.ParseLambda<;T、 布尔>;_C#_Linq_Dynamic_Dynamic Linq - Fatal编程技术网

C# 操作员'==';与操作数类型不兼容';Guid';和';Guid';使用DynamicExpression.ParseLambda<;T、 布尔>;

C# 操作员'==';与操作数类型不兼容';Guid';和';Guid';使用DynamicExpression.ParseLambda<;T、 布尔>;,c#,linq,dynamic,dynamic-linq,C#,Linq,Dynamic,Dynamic Linq,我正在使用 还有 还有Nuget版本 PM>安装程序包DynamicLink 我试图构造一个包含guid的where子句 我试过使用字符串“Id==@0”。 参数数组只是一个具有值(guidxxxx)的对象[] var whereclauseb=BuildLogicalKeyWhereClause2(实体,logicalKey)//构建字符串 var parms=BuildParamArray(实体,logicalKey);//对象[] var whereLambda=Ofsi.Bos.Core

我正在使用 还有 还有Nuget版本

PM>安装程序包DynamicLink

我试图构造一个包含guid的where子句

我试过使用字符串
“Id==@0”
。 参数数组只是一个具有值(
guidxxxx
)的
对象[]

var whereclauseb=BuildLogicalKeyWhereClause2(实体,logicalKey)//构建字符串
var parms=BuildParamArray(实体,logicalKey);//对象[]
var whereLambda=Ofsi.Bos.Core.DynamicExpression.ParseLambda(whereclauseb.ToString(),parms)//作语法分析
DynamicExpression.ParseLambda中引发异常

运算符“==”与操作数类型“Guid”和“Guid”不兼容

  • 我也尝试过使用GUID和字符串。(失败)
  • 我尝试了和“Id=@0”(失败)
  • String==String有效,Int32==Int32有效,但Guid==Guid无效

有什么想法吗?

尝试使用
Equals
方法,而不是字符串中的
=
运算符:

"Id.Equals(@0)"

可能代码中有一个bug,因为
Guid
在他们的文档中有明确的支持。ObjectDirectoryId.Equals(@0)&&ObjectId=@1&&CultureName=@2,匹配的对象[]刚刚被解析。:-)一旦考试完成,我会记为正确答案,但看起来不错。谢谢,这很好,但我有一个空Guid的问题。我得到了一个类型为“System.Guid”的异常表达式,它不能用于方法“Boolean Equals(System.Object)”的类型为“System.Object”的参数@WahidBitar我猜你有
MyGuid.Equals(null)
MyGuid.Equals(@0)
,你传递的参数是
null
fo
@0
。在这两种情况下,请确保您在中使用的是
(Guid?)null
默认值(Guid?
,而不仅仅是
null
。感谢您的快速支持。我发现最简单的方法是使用
MyGuid.Value.Equals(另一个值)
"Id.Equals(@0)"