我有一个表,其中有一列代码是一个以 2 到 4 个字符开头的字符串,然后可能有也可能没有空格,然后它有一个数字。例如:KR123 或 KS 23 或 K23456。SQL Server 2008 上的以下 SQL 代码将仅返回数字:
Select CONVERT(int, Reverse(LEFT(REVERSE(codefield),PATINDEX('%[a-z]%', REVERSE(codefield)) - 1)))
From Table1
这在 SQL 中效果很好,但与我一起工作的一位程序员想要使用 LINQ to Entites 来做同样的事情。我在 VB.Net 中尝试了这段代码,只是想看看是否可以从第一行获取反转字段的索引值:
Dim theResult = theContext.Table1.select(function(y)
System.Data.Objects.SQLClient.SQLFunctions.PatIndex("%[a-z]%", y.codefield.Reverse)
).FirstOrDefault
它编译得很好,但是运行时出现错误:LINQ to Entities does not identify the method 'System.Collections.Generic.IEnumerable 1[System.Char] Reverse[Char](System.Collections.Generic.IEnumerable
1[System.Char])' 方法,并且此方法无法转换为存储表达式.
如果我删除 .Reverse,它可以工作,但我需要能够反转列数据才能使代码正常工作。
谁能弄清楚如何使用 LINQ to Entities 进行原始选择?
谢谢,NCGrimbo