使用LINQ Contains与SqlMethods.Like

mmc*_*ynn 3 linq vb.net asp.net

如何在不调用辅助库System.data.Linq.SqlClient的情况下在LINQ查询中复制以下结果?

Where SqlMethods.Like(e.POSITION, "%A[FGL]7%") _
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我希望这个查询更纯粹是LINQ.

Ahm*_*eed 9

编辑:根据我对Lette的评论,我最初错过了SqlMethods.Like支持的模式匹配.

您的查询看起来像VB,因此您可以直接使用Like运算符,但您需要将%星号替换为*:

Where e.POSITION Like "*A[FGL]7*" _
Run Code Online (Sandbox Code Playgroud)

如果你正在使用C#,你需要在调用将数据存入内存之后使用Lette的建议AsEnumerable()(可能首先过滤任何其他标准,然后调用正则表达式进行进一步过滤)或遵循Ruben的建议.

我下面提到的方法不像SqlMethods.Like方法那样100%,因为模式基本上是转义的.换句话说,它只将其视为文字文本.


只需使用常规的String.Contains方法:

Where e.POSITION.Contains("A[FGL]7")
Run Code Online (Sandbox Code Playgroud)

LINQ to SQL将以这种方式转换.NET方法:

  • 文本.StartsWith(...) =LIKE ...%
  • 文本.包含(...) =LIKE %...%
  • 文本.EndsWith(...) =LIKE %...