2

現在、別のテーブルの列を既存のテーブルに結合して、MVC4のビューに戻そうとしています。

var q = from accCo in db.AccControls
        join accCom in db.AccCompanies
        on new { accCo.ControlCode } equals
        new { ControlCode = accCom.Code }

        where accCo.ControlCode == Request.QueryString["ControlCode"]
        orderby accCom.Code
        select new Combined{ AccControls = accCo, AccCompoanies = accCom };

return View(q);

しかし、私は上記のエラーが発生しています

4

3 に答える 3

9

結合する列のいずれかがNULL可能である場合は、それを.Valueに変更する必要があります。

on new { accCo.ControlCode } equals
            new { ControlCode = accCom.Code.Value }

またはこれを使用できます

var q = from accCo in db.AccControls
    join accCom in db.AccCompanies
    where accCom.Code != null
    on new { accCo.ControlCode } equals
    new { ControlCode = accCom.Code }

    where accCo.ControlCode == Request.QueryString["ControlCode"]
    orderby accCom.Code
    select new Combined{ AccControls = accCo, AccCompoanies = accCom };
于 2013-02-07T13:57:06.143 に答える
1

試す

var q = from accCom in db.AccCompanies
        let accCo = db.AccControls.FirstOrDefault(x => x.ControlCode == accCom.Code)
        where accCo.ControlCode == Request.QueryString["ControlCode"]
              && accCo != null
        orderby accCom.Code
        select new Combined { AccControls = accCo, AccCompoanies = accCom };
于 2013-02-07T13:54:49.347 に答える
0

おそらくそのRequest.QueryString["ControlCode"]

次のように、linqqryの外でデカールしてみてください。

var code = Request.QueryString["ControlCode"];

var q = from accCo in db.AccControls
        join accCom in db.AccCompanies
        on new { accCo.ControlCode } equals
        new { ControlCode = accCom.Code }

        where accCo.ControlCode == code //EDIT
        orderby accCom.Code
        select new Combined{ AccControls = accCo, AccCompoanies = accCom };
于 2013-02-07T14:00:46.660 に答える