2011-11-10 45 views
0

我試圖插入if語句內凡在模型中,MVC3 C#的LINQ(凡/ IF)

q = from vw_masterview in ctx.vw_MasterViews 
where 
vw_masterview.LastDate <= toDate && 
vw_masterview.OfficeId == MemberRepository.AllowedOfficeId 

AllowedOfficeId可能是空的,我想補充,如果statment

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

提前致謝。

回答

3

您可以用流利的符號重寫查詢,當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); 
} 

然後你就可以運行查詢或繼續建立起來,如使用Select方法檢索特定屬性或項目到匿名類型或新類。

+0

感謝Ahamd的幫助 – hncl

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

感謝Chris,它運作良好。我剛剛發現我在下面再次使用它:(十進制)ctx.vw_MasterViews.Where(c => c.OfficeId == MemberRepository.AllowedOfficeId).Count()。我很感激你的幫助 – hncl

+0

'(十進制)ctx.vw_MasterViews.Count(C =>(MemberRepository.AllowedOfficeId!= NULL)&&(c.OfficeId == MemberRepository.AllowedOfficeId))' –

+0

感謝克里斯,我沒有得到任何錯誤,但是我得到空值,因爲我認爲查詢仍然將空值應用於AllowedOfficeId。我試圖做的是如果它爲空,從where語句省略AllowedOfficeId。 – hncl