Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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
Asp.net mvc 3 MVC3 C Linq(其中/如果)_Asp.net Mvc 3_Linq To Sql_C# 4.0 - Fatal编程技术网

Asp.net mvc 3 MVC3 C Linq(其中/如果)

Asp.net mvc 3 MVC3 C Linq(其中/如果),asp.net-mvc-3,linq-to-sql,c#-4.0,Asp.net Mvc 3,Linq To Sql,C# 4.0,我试图在模型的Where中插入if语句 q = from vw_masterview in ctx.vw_MasterViews where vw_masterview.LastDate <= toDate && vw_masterview.OfficeId == MemberRepository.AllowedOfficeId AllowedOfficeId可以为null,我想添加if statment q = from vw_masterview in ctx.vw

我试图在模型的Where中插入if语句

q = from vw_masterview in ctx.vw_MasterViews
where 
vw_masterview.LastDate <= toDate &&
vw_masterview.OfficeId == MemberRepository.AllowedOfficeId
AllowedOfficeId可以为null,我想添加if statment

q = from vw_masterview in ctx.vw_MasterViews
    where 
    vw_masterview.LastDate <= toDate &&
    ***if (MemberRepository.AllowedOfficeId != null)***
    vw_masterview.OfficeId == MemberRepository.AllowedOfficeId

提前感谢。

当AllowedOfficeId不为null时,您可以使用fluent符号重写查询并应用额外的Where语句:

var query = ctx.vw_MasterViews.Where(v => v.LastDate <= toDate);
if (MemberRepository.AllowedOfficeId != null)
{
    query = query.Where(v => v.OfficeId == MemberRepository.AllowedOfficeId);
}

然后,您可以运行查询或继续构建查询,例如使用Select方法检索特定属性或将其投影到匿名类型或新类中。

您可以使用fluent符号重写查询,并在AllowedOfficeId不为null时应用额外的Where语句:

var query = ctx.vw_MasterViews.Where(v => v.LastDate <= toDate);
if (MemberRepository.AllowedOfficeId != null)
{
    query = query.Where(v => v.OfficeId == MemberRepository.AllowedOfficeId);
}
q = from vw_masterview in ctx.vw_MasterViews
    where
        vw_masterview.LastDate <= toDate &&
        (
            (MemberRepository.AllowedOfficeId != null) &&
            (vw_masterview.OfficeId == MemberRepository.AllowedOfficeId)
        )

然后,您可以运行查询或继续构建查询,例如使用Select方法检索特定属性或将其投影到匿名类型或新类中。

谢谢Chris,它工作得很好。我刚刚发现我在下面的代码中再次使用了它:Decimalctx.vw_masterview.Wherec=>c.OfficeId==MemberRepository.AllowedOfficeId.Count。我非常感谢您的助手具体的ctx.vw_masterview.Countc=>MemberRepository.AllowedOfficeId!=null&&c.OfficeId==MemberRepository.AllowedOfficedHanks,我没有得到任何错误,但是我得到了null值,因为我认为查询仍然将null值应用于AllowedOfficeId。我想做的是,如果where语句为空,则省略AllowedOfficeId。谢谢Chris,它工作得很好。我刚刚发现我在下面的代码中再次使用了它:Decimalctx.vw_masterview.Wherec=>c.OfficeId==MemberRepository.AllowedOfficeId.Count。我非常感谢您的助手具体的ctx.vw_masterview.Countc=>MemberRepository.AllowedOfficeId!=null&&c.OfficeId==MemberRepository.AllowedOfficedHanks,我没有得到任何错误,但是我得到了null值,因为我认为查询仍然将null值应用于AllowedOfficeId。我试图做的是,如果where语句为null,则省略AllowedOfficeId。
q = from vw_masterview in ctx.vw_MasterViews
    where
        vw_masterview.LastDate <= toDate &&
        (
            (MemberRepository.AllowedOfficeId != null) &&
            (vw_masterview.OfficeId == MemberRepository.AllowedOfficeId)
        )