我正在重写一个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();
正如你所看到的,我不确定类似操作符的等价物是什么。我通过几个代码转换器运行这个,他们不断抛出错误。
4条答案
按热度按时间2fjabf4q1#
若要获得最等效的功能,请确保C#项目引用了Microsoft.VisualBasic程序集。
然后,您可以直接从C#中使用VB.NET
Like
操作符,例如。请确保包括
这将获得最等效的功能,但将是我认为有点黑客。
您的其他选择是使用
String.StartsWith
,String.EndsWith
,String.Contains
或Regex。j2cgzkjk2#
根据需要使用
string
的StartsWith
或EndsWith
或Contains
静态方法。xuo3flqw3#
Regex是最好的选择。由于Like操作支持 *,?、#和[],我认为可以使用Regex库轻松匹配复杂的模式。例如,下面的行将返回true。
"aBBBa" Like "a*a" "ajhfgZ1" Like "*Z[12]"
这取决于您的应用程序。如果你只是用它来匹配一个简单的硬编码字符串,你可以直接使用String.Contains、String、StartsWith或String.EndsWith,但是对于复杂的匹配,使用Regex会得到最好的结果。
2ekbmq324#
正如其他人已经指出的那样,C#中没有Like运算符。
而且它在VB.Net for .net标准中不可用。(已为.net再次添加)
我有一个例子,模式是用户输入。迁移到网络标准,我唯一的选择就是自己实现它。我选择将模式转换为等价的正则表达式: