C#中是否有类似VB.NET的运算符?

时间:2014-07-17 20:12:14

标签: c# vb.net linq

我正在重写一个vb.net应用程序,但我不能声称对vb很好。我需要在C#中写出这个等价的东西:

Dim bigList = (From gme In dtx.gmc_message_elements 
              Where gme.element_key_name Like "*email" _
              Or gme.element_key_name Like "*web" 
              Or gme.element_key_name Like "*both" _
              Select gme.element_key_name Distinct).ToList()

我到目前为止:

var bigList = (from gme in dtx.gmc_message_elements 
               where gme.element_key_name Like "*email" 
               || gme.element_key_name Like "*web" 
               || gme.element_key_name Like "*both" 
               select gme.element_key_name).FirstOrDefault().ToList();

正如您所看到的,我不确定相似的运算符是什么。我通过几个代码转换器运行它,并且它们经常抛出错误。

3 个答案:

答案 0 :(得分:18)

要获得最相同的功能,请确保您的C#项目引用了Microsoft.VisualBasic程序集。

然后,您可以直接使用C#中的VB.NET Like运算符,例如

LikeOperator.LikeString(gme.element_key_name, "*web", CompareMethod.Text);

请务必加入

using Microsoft.VisualBasic.CompilerServices;

这将获得最相同的功能,但是我认为这有点像黑客。

您的其他选择是使用String.StartsWithString.EndsWithString.ContainsRegex

答案 1 :(得分:5)

根据您的需要使用StartsWithEndsWithContains string静态方法。

答案 2 :(得分:0)

我认为Regex是最好的选择。由于Like操作支持*,?,#和[], 我认为可以使用Regex库轻松匹配复杂的模式。例如。以下行将返回true。

"aBBBa" Like "a*a" "ajhfgZ1" Like "*Z[12]"

现在取决于您的申请。如果您只是使用它来匹配一个简单的硬编码字符串,您可以直接使用String.Contains,String,StartsWith或String.EndsWith但是对于复杂匹配使用Regex以获得最佳结果。