2016-04-23 17 views
1

データベースに列名を持つテーブルがあります。グリッドに表示する前にテーブルを読むと、すべてのアイテム名を変更する必要があります。エンティティへvb.netまたはC#のLINQでindexOf()関数を使用しますか?

LINQは方法'のInt32 IndexOfメソッド(可能System.String、システムを認識しない:私は上記のコードを使用するとき、私は私がこのエラーメッセージを取得し、このLINQ句

Dim hospitalList = From l In db_Obj.VWrmz_HospitalCorrection 
         Select hospitalName = l.HOSPITAL_NAME.Substring(0,l.HOSPITAL_NAME.IndexOf("--")) 

を使用する必要があります。 StringComparison)'メソッドであり、この メソッドをストア式に変換することはできません。

が、私は正しくIndexOf()その作業削除:

Dim hospitalList = From l In db_Obj.VWrmz_HospitalCorrection 
        Select hospitalName = l.HOSPITAL_NAME.Substring(10) 

このように私の細胞から何かを削除するために、私はどのように行うことができますか?

+0

文字列 " - "が見つからない場合は-1を返します。したがって、エラーメッセージの原因となるSubstring(0、-1)を取得します。 – jdweng

+0

@jdweng - それは問題ですが、エラーの原因ではありません。エラーの原因は、Entity Frameworkエンジンが 'IndexOf'をSQL式に変換する方法を知らないという事実にあります。 –

答えて

1

おそらく匿名を使用していますか?あなたのエラーメッセージに

Dim hospitalList = From l In db_Obj.VWrmz_HospitalCorrection 
         Select New With {.hospitalName = l.HOSPITAL_NAME.Substring(0,l.HOSPITAL_NAME.IndexOf("--"))} 
+0

ありがとうございます。正確には何が起こったのか教えてください。 – Mohammad

0

、認識されない方法は「Int32.IndexOf」で、「IndexOfメソッド」メソッドの呼び出しではなく、「文字列」の「のInt32」で、いずれかがあなたのHOSPITAL_NAMEを番号にすることができている可能性があります??

問題を見つけることができない場合、あなたは(私はC#を使用していますので...これはそのために残念C#コード、である)このように、代わりに「サブストリング」方法の正規表現を試すことができます。

Regex regex = new Regex("--.*"); 
var hospitalList = From l In db_Obj.VWrmz_HospitalCorrection 
        Select hospitalName = regex.Replace(l.HOSPITAL_NAME, ""); 

希望することができます。

+0

**は 'Int32.IndexOf'ではなく、' Int32 IndexOf'と言っています。つまり、 'IndexOf'の戻り値** _は' Int32'です。 –

+0

私の誤解..... .....ありがとう – baiyangcao

0

ここにはC#版があります。
LINQ to EF IndexOfメソッドをSQL構文に変換できません。後でデータをフェッチして操作を実行できます。

from ll in (from l in db_Obj.VWrmz_HospitalCorrection 
select hospitalName = l.HOSPITAL_NAME).ToList() 
select ll.Substring(0, ll.IndexOf("--")) 
関連する問題