私は、コードが2〜4文字で始まり、スペースを持っていてもいなくてもよい文字列であるカラムを持つテーブルを持っています。例:KR123またはKS 23またはK23456。 SQL Server 2008で次のSQLコードは、単に数を返します。これは、SQLで素晴らしい作品が、私が仕事プログラマーの一つは、同じことを行うためにEntitesにLINQを使用したいLinq to Entitiesとカラムを逆転する
Select CONVERT(int, Reverse(LEFT(REVERSE(codefield),PATINDEX('%[a-z]%', REVERSE(codefield)) - 1)))
From Table1
。私は、最初の行から逆磁場のインデックス値を取得することができればちょうど見るためにVB.Netでこのコードを試してみました:
Dim theResult = theContext.Table1.select(function(y)
System.Data.Objects.SQLClient.SQLFunctions.PatIndex("%[a-z]%", y.codefield.Reverse)
).FirstOrDefault
それは罰金コンパイルが、それが実行されるとき、これは私にエラーを与える:LINQをしますエンティティはメソッド 'System.Collections.Generic.IEnumerable 1[System.Char] Reverse[Char](System.Collections.Generic.IEnumerable
1 [System.Char]'メソッドを認識せず、このメソッドをストア式に変換することはできません。
。逆のコードを削除しても機能しますが、コードが正常に動作するためには列データを元に戻す必要があります。
LINQ to Entitiesを使用して元の選択を行う方法を理解できますか?
おかげで、 NCGrimbo
「theContext.ExecuteStoreQuery」を使用するのが最も簡単な場合があります:http://blogs.microsoft.co.il/blogs/gilf/archive/ 2009/11/25/execute-t-sql-statements-in-entity-framework-4.aspx – mellamokb