Asp.net mvc 3 MVC3 C Linq(其中/如果)
我试图在模型的Where中插入if语句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
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)
)