我实际上正在尝试回答this question,但由于这非常复杂且不太可能迅速获得良好的响应,我将尝试自己解决实现问题。根本问题似乎是我遵循的C#示例无法直接转换为VB。
当在lambda中检查字符串比较BinaryExpression时,VB报告Expression.Method.DeclaringType为Microsoft.VisualBasic.CompilerServices.Operators,并具有方法名CompareString。这显然是VB特定的。
表达式只是比较x.Content_Type <> "",并对其调用ToString返回{(CompareString(x.Content_Type, "", False) != 0)}-这似乎相当合理(CompareString docs here)。
有人可以向我解释一下VB和C#如何以不同的方式处理字符串比较吗?
我认为如果我能得到这个答案,我应该能够解决另一个问题。 编辑: 澄清一下,我正在实现一个自定义的LINQ提供程序,它正在检查以下
当在lambda中检查字符串比较BinaryExpression时,VB报告Expression.Method.DeclaringType为Microsoft.VisualBasic.CompilerServices.Operators,并具有方法名CompareString。这显然是VB特定的。
表达式只是比较x.Content_Type <> "",并对其调用ToString返回{(CompareString(x.Content_Type, "", False) != 0)}-这似乎相当合理(CompareString docs here)。
有人可以向我解释一下VB和C#如何以不同的方式处理字符串比较吗?
我认为如果我能得到这个答案,我应该能够解决另一个问题。 编辑: 澄清一下,我正在实现一个自定义的LINQ提供程序,它正在检查以下
Where
调用:
Query.Where(function(x) x.Content_Type <> "")
或者C#等效语句...
query.Where(x=>x.Content_Type!="");
Option Compare语句
。在VB.NET中,您可以进行大小写不敏感的比较(Option Compare Text
)。默认情况下是Option Compare Binary
,就像在C#中一样。 - Tim Schmelterquery.Where(x=>x.Content_Type!="");
吧? - Andrew Barber