Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# join子句中某个表达式的类型不正确。调用';时类型推断失败;加入';_C#_Asp.net_Linq_Asp.net Mvc 4 - Fatal编程技术网

C# join子句中某个表达式的类型不正确。调用';时类型推断失败;加入';

C# join子句中某个表达式的类型不正确。调用';时类型推断失败;加入';,c#,asp.net,linq,asp.net-mvc-4,C#,Asp.net,Linq,Asp.net Mvc 4,我目前正在尝试将一列从另一个表连接到现有表,并将其返回到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.QuerySt

我目前正在尝试将一列从另一个表连接到现有表,并将其返回到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);
但是我得到了上面的错误

试试看

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 };

如果您加入的任何列都可以为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 };

也许是
请求。QueryString[“ControlCode”]

尝试在linq qry外贴花,如下所示:

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 };

accCo.ControlCode或accCom.Code是否可以为空?您是否尝试过在accCo.ControlCode==accom.Code上使用=?或者这些类型不同?accCo.ControlCode不允许空值。accCom.Code确实允许为空。请看我下面的答案:)当然,它们应该来自同一类型才能做到这一点。为什么这会有帮助?这样就消除了连接错误,谢谢,但现在我得到了:String不包含Value的定义,并且找不到接受String类型的第一个参数的扩展方法值,那么您不应该使用.Value,而是筛选空记录