2013-02-19 44 views
1

我最多有4个值:字符串firstName,字符串lastName,字符串ssn,日期时间dateOfInjury。用户可以输入这些或任何组合中的任何一个。如果他们输入多个,我想使用AND返回结果。例如,firstName匹配的地方(如果这是他们输入的全部),或者如果firstName和lastName匹配(如果它们输入了两个),依此类推。用LINQ做这件事的最好方法是什么?我希望有一件更优雅的东西,那就是一个巨大的开关语句。高级搜索LINQ到EF

我打算动态构建where子句,但看起来好像不会起作用:Building dynamic where clauses in LINQ to EF queries

回答

2

只需构建您的查询。如果你有一系列Where调用,那么这些调用就会AND'd在一起。

IQueryable<Customer> query = source.Customers; 

if (firstName != null) 
{ 
    query = query.Where(c => c.FirstName == firstName); 
} 
if (lastName != null) 
{ 
    query = query.Where(c => c.LastName == lastName); 
} 
+0

啊。那么每个查询的结果集会稍微进一步降低?这从来没有发生过。我会给它一个镜头。 – birdus 2013-02-19 15:45:48

+0

这很好用!谢谢! – birdus 2013-02-19 15:59:55