私は実際にこの質問に答えようとしていますが、それは非常に複雑で、すぐに良い応答が得られない可能性があるため、自分で実装を試してみます。基本的な問題は、私がフォローしていたC#の例がVBに直接変換されないことのようです。
ラムダで文字列の比較を調べるときBinaryExpression
、VBはメソッド名が。であると報告Expression.Method.DeclaringType
します。これは明らかにVB固有です。Microsoft.VisualBasic.CompilerServices.Operators
CompareString
x.Content_Type <> ""
式は、ToStringを比較して呼び出すだけで、戻り値が返されます。{(CompareString(x.Content_Type, "", False) != 0)}
これはかなり論理的なようです(CompareStringのドキュメントはこちら)。
誰かが私にVBとC#が文字列の比較を異なる方法で処理する方法(またはさらに良い理由)を説明できますか?
その答えが得られれば、もう一つの問題の解決策が見つかるはずだと思います。
編集:
明確にするために、私は次のWhere
呼び出しを調べているカスタムLINQプロバイダーを実装しています:
Query.Where(function(x) x.Content_Type <> "")
または同等のC#...
query.Where(x=>x.Content_Type!="");
私の知る限り、2つは機能的に同一である必要があります