Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#中是否有类似VB.NET的运算符?_C#_Vb.net_Linq - Fatal编程技术网

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

C#中是否有类似VB.NET的运算符?,c#,vb.net,linq,C#,Vb.net,Linq,我正在重写一个vb.net应用程序,我不能说我对vb很在行。我需要用C#写这个等价词: 到目前为止,我已经: 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

我正在重写一个vb.net应用程序,我不能说我对vb很在行。我需要用C#写这个等价词:

到目前为止,我已经:

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();

正如你所看到的,我不确定like操作符的等价物是什么。我通过几个代码转换器运行了这个过程,它们不断地抛出错误。

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

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

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

一定要包括

using Microsoft.VisualBasic.CompilerServices;
<>这将得到最等价的功能,但是我认为这是一个黑客攻击。
您的其他选择是使用或。

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


“aBBBa”像“a*a”
“ajhfgZ1”类似于“*Z[12]”


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

您查询的源是什么
.Where(x=>x.EndsWith(“email”);
可能比较合适。C#中没有类似于
操作符,在这种情况下,您可以使用
String.EndsWith
(如果这是
Linq To Objects
),否则您需要使用regex或
SqlMethods。比如
(如果是
Linq To Sql
)。这个问题不是重复的,它涉及到将VB.NET
Like
运算符转换为C#等效运算符,而另一个问题是SQL
Like
运算符,不同的东西…@Robert:它在你文章的顶部(也许你需要刷新)在C#中也可以实现同样的效果,但是你没有得到同样的语法糖分,所以它有点难看:
where LikeOperator.LikeString(mySourceString,“*Something*”,CompareMethod.Text)
它位于
Microsoft.VisualBasic.CompilerServices
命名空间中。此处的进一步信息:您可能应该添加您建议的实际正则表达式。如果您试图说
*Z[12]
是一个正则表达式,这是错误的。
a*a
也不匹配
aBBBa
——它只匹配0个或多个
a
s,然后是另一个
a
。您可能是指
a.*a
Z[12]
(或者您可能只是试图演示类似的语法,但我不清楚)hiii a*a与aBBBa匹配,“Like”操作将模式与字符串匹配,因此等式的模式部分支持*、?等和*Z[12]可以转换为正则表达式,但对于类似的操作,这是它可以使用的方式。关于这方面的更多信息,请随时更正我的错误。这就是我将学习的方法:)好的,我的抱怨是,不清楚你的示例是什么意思<代码>可以使用正则表达式库轻松匹配。例如,以下几行将返回true。
使我相信接下来几行将有正则表达式。指出你给出的例子只是为了说明Like是复杂的,我想这会让事情变得更清楚。那些方法不允许像doesal那样使用通配符,所以它们不是静态方法。
LikeOperator.LikeString(gme.element_key_name, "*web", CompareMethod.Text);
using Microsoft.VisualBasic.CompilerServices;