Vb.net Linq where';不像';或者<&燃气轮机;相当于
我已经让它工作了:Vb.net Linq where';不像';或者<&燃气轮机;相当于,vb.net,linq,inversion,Vb.net,Linq,Inversion,我已经让它工作了: Dim locations = From row In allLocations.AsEnumerable() Where row.Field(Of String)("PartNr") Is Nothing Select row 它获取没有零件号的所有位置。 但我想做一些类似的事情来获取除一些记录之外的所有内容: 一个简单的字符串包含(即相当于SQL的,如“%substring%”)可以通过以下方式完成: 我找到了一个解决方案,解决了我一
Dim locations = From row In allLocations.AsEnumerable()
Where row.Field(Of String)("PartNr") Is Nothing
Select row
它获取没有零件号的所有位置。
但我想做一些类似的事情来获取除一些记录之外的所有内容:
一个简单的字符串包含(即相当于SQL的,如“%substring%”
)可以通过以下方式完成:
我找到了一个解决方案,解决了我一直在寻找的问题:
Dim rgx As New Regex("^G[A-Z]")
Dim alleLocaties = From row In beginQuery.AsEnumerable()
Where (Not rgx.IsMatch(row.Field(Of String)("Location"))
在这个例子中,我得到的所有位置都不是以G开头,后面跟着一个字母。为什么你不能做
“12345”
?如果我尝试得到所有结果(包括12345),我可能会更好地澄清,我不是真的使用数字,而是一个正则表达式,例如:“G[a-Z]*”,在这种情况下,@Richard的答案应该有效。它适用于我定义的字符串部分,如示例中的G,但不适用于正则表达式。example/regex:G[A-Z]*很抱歉,我忘了说它实际上不仅仅是一个字符串,而是一个正则表达式。我只是在原帖中回复了它,因此我很抱歉忘记在op中澄清这一点。@TomParedis您需要使用一些Google Fu来查找可能的内容,其中肯定不会包含任何与.NET正则表达式功能相近的内容(请阅读文档以了解类似的:这是非常有限的匹配)。要直接使用服务器的操作,比如操作,您需要使用我期望的SQL。好的,我将尝试找到解决方案。感谢您的帮助如果它位于数据表中
您也可以使用它。@TomParedis根据所涉及的行数,您可以从数据库中获取所有数据,并在.NET中应用正则表达式(即从IQueryable(Of T)
切换到IEnumerable(Of T)
,您可以在其中使用正则表达式。
Dim locations = From row In allLocations.AsEnumerable()
Where not row.Field(Of String)("PartNr").Contains("12345")
Select row
Dim rgx As New Regex("^G[A-Z]")
Dim alleLocaties = From row In beginQuery.AsEnumerable()
Where (Not rgx.IsMatch(row.Field(Of String)("Location"))