0

どういうわけか、ステートメントのON部分にlinqパラメーターのタイプをキャストする方法がわかりません。ステートメントは次のエラーにつながります:

エラー1結合句の式の1つのタイプが正しくありません。'GroupJoin'の呼び出しで型推論が失敗しました。

ProjectID = pIDのタイプはintであり、r.ProjectIDも同様です。それで、誰かがこのエラーの原因の手がかりを持っていますか?

ViewData.Model = (from c in _db.Category
    join r in _db.CategoryAndProject2
    on new { c.CategoryID, ProjectID = pID } equals new { r.CategoryID,  r.ProjectID }
    into join1
    from j in join1.DefaultIfEmpty()
    select new CategoryDTO
    {
    CatID = (int) j.CategoryID    
    }).Distinct().ToList(); 

コードが欠落しているため、オンラインで編集しました

4

2 に答える 2

0

これを試して:

on (int?)c.CategoryID equals r.CategoryID

結合に匿名型は必要ありません。

于 2013-03-22T12:58:53.093 に答える
0

あなたはこれを行うことができます:

from c in _db.Category
join r in _db.CategoryAndProject2
on new { c.CategoryID, ProjectID = pID } equals
   new { CategoryID = r.CategoryID ?? 0,  r.ProjectID }
...

した方が効率的かもしれませんが

from c in _db.Category
join r in _db.CategoryAndProject2
on new { CategoryID = (int?)c.CategoryID, ProjectID = pID } equals
   new { r.CategoryID, r.ProjectID }
...

これは、変換なしでフィールドの直接結合に変換されるためです。最初のクエリにはCOALESCE、インデックスの使用を除外する が含まれています。

于 2013-03-22T18:05:00.950 に答える