2012-03-21 17 views
8

コードビハインドファイルのasp.netページにコードセグメントがあります。私はモジュール(general_functions.vb)内のパブリックサブルーチンに移動することにしました。しかし、私がこれをやった後、コードはもはや機能しません - それはエラーを投げます。LINQ to Entitiesがメソッドを認識しません。System.ObjectCompareObjectEqual

あり
Public Sub DeleteResidency(delpeople_id, delsemester, delyear) 
    Using dbContext as pbu_housingEntities = New pbu_housingEntities 
     Dim remove_selection = (From p in dbContext.Residents _ 
           Where p.people_code_id = delpeople_id _ 
           Where p.year = delyear _ 
           Where p.semester = delsemester _ 
           Order By p.id Descending _ 
           Select p).FirstOrDefault 
    End Using 
End Sub 

を次のように私は公共のサブルーチンを作成し、私のgeneral_functions.vbで今

DeleteResidency(people_id, semester, year) 

:元のコードビハインド私はそうのようなコールで元のコードを置き換えるには

それより多くのコードですが、上記のコードはエラーをスローします。私が手にエラーがある:エンティティへ

LINQは「System.Objectの CompareObjectEqual(System.Objectの、System.Objectの、ブール)」メソッド、および このメソッドメソッドを認識しない店に翻訳することはできません表現。

なぜこのようなことが起こっているのか理解してもらえますか?

+2

「semester」のタイプは何ですか? – Eranga

+0

すべての値は文字列としてキャストされます。 – davemackey

+3

私はあなたのどこの条件で非プリミティブ型の比較があるのだろうと思う。 – Eranga

答えて

10

明示的にDeleteResidency Sub Routineの定義にパラメータを入力してください。これは、コンパイラがこれらのタイプのエラーを推測して防止することを少なくします。

関連する問題