2015-10-09 148 views
0

我試圖根據傳遞給查詢的整數列表的可能性來過濾實體;但是也可能沒有整數傳遞到查詢中。在下面如果「狀態」傳遞作爲整數列表的例子,我會想返回包含匹配的狀態(整數)LINQ查詢基於列表中的值?

Status As List(Of Integer) 
Query as IQueryable(Of db.People) = db.people.asNoTracking.Where(Function(C) c.DeleteFlag = False) 
Query = (From q In Query From s In Status Where q.PersonStatus = s) 
+1

那麼,什麼是問題?你的代碼不工作? – Tim

+0

@Tim對不起,正確無法正常工作 – DDulla

回答

0

假設,如果你在任何狀態通過所有結果,你希望所有的記錄,那麼:

query=db.people.Where(Function(c) c.DeleteFlag=False) 
if (Status.Any()) 
    query=query.Where(Function(c) Status.Contains(c.PersonStatus)) 

如果你不想要記錄時沒有狀態傳遞中,則:

if (!Status.Any()) 
    query=new List(Of people).AsQueryable() 
else 
    ... 
endif 
+0

感謝這對我工作 – DDulla