我实际上是在尝试回答这个问题,但由于这涉及到很多问题,而且不太可能很快得到很好的回应,所以我将尝试自己制定实施方案。根本问题似乎是我遵循的 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 提供程序,它正在检查以下Where
调用:
Query.Where(function(x) x.Content_Type <> "")
或 C# 等价物...
query.Where(x=>x.Content_Type!="");
据我所知,2应该在功能上相同