LINQ查询基于列表中的值?

时间:2015-10-09 19:42:15

标签: vb.net 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 个答案:

答案 0 :(得分: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