我最多有4个值:string firstName,string lastName,string ssn,DateTime dateOfInjury。用户可以输入这些或任何组合中的任何一个。如果他们输入多个,我想使用AND返回结果。例如,firstName匹配(如果这是他们输入的全部),或者如果firstName和lastName匹配,如果他们同时输入它们,依此类推。使用LINQ执行此操作的最佳方法是什么?我希望有一个更优雅的东西,一个巨大的转换声明。
我计划动态构建where子句,但似乎不起作用:Building dynamic where clauses in LINQ to EF queries。
答案 0 :(得分:2)
只需构建您的查询即可。如果你有一系列Where调用,那么这些调用是AND。
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);
}