2

LINQ to Entities クエリに問題があります。4 つのテーブルを結合していますが、以下の結合列に対して同じデータ型を持たない 2 つのテーブルがクエリです。

var qry = (from i in dc.INTERNETDATAs
           join c in dc.COVERS on Convert.ToInt32(i.COVERTYPE) equals c.COV_TYPE
           join b in dc.BENEFITS on c.COVERID equals b.COVERID
           join p in dc.POLICies on i.REFERENCENO equals p.BACS_POLNO into grp
           where i.DATELOADED >= startDate
             && i.DATELOADED < endDate
             && i.CAMPAIGNTYPE == campaignType
             && c.COVERTYPEID == coverTypeId
           select i).DefaultIfEmpty();

最初の結合の上のコードで

join c in dc.COVERS on Convert.ToInt32(i.COVERTYPE) equals c.COV_TYPE

次のエラーが発生しています

InnerException: System.NotSupportedException Message=LINQ to Entities はメソッド 'System.String ToString()' メソッドを認識せず、このメソッドはストア式に変換できません。ソース=System.Data.Entity

どうすればこれを達成できますか?

4

2 に答える 2

3

i.COVERTYPE が文字列であると仮定すると、Convert.ToInt32() の使用は避けてください。SqlFunctions.StringConvert代わりに *c.COV_TYPE*​​ を使用してください。からのもので、次のSystem.Data.Objects.SqlClientように呼び出すことができます。

var qry = (from i in dc.INTERNETDATAs
           join c in dc.COVERS on i.COVERTYPE equals SqlFunctions.StringConvert(c.COV_TYPE)
           join b in dc.BENEFITS on c.COVERID equals b.COVERID
           join p in dc.POLICies on i.REFERENCENO equals p.BACS_POLNO into grp
           where i.DATELOADED >= startDate
             && i.DATELOADED < endDate
             && i.CAMPAIGNTYPE == campaignType
             && c.COVERTYPEID == coverTypeId
           select i).DefaultIfEmpty();
于 2013-09-06T11:38:11.077 に答える