我有一个用户可以用来搜索员工数据的多种搜索条件的表单,例如,名字,姓氏,雇用日期,部门等具有多种搜索条件的笨拙的LINQ语句
我正在使用LINQ和我想知道什么方法可以用来查询给定的任何搜索条件的雇佣集合,即用户不必输入全部,但他们必须输入至少一个搜索参数。
到目前为止,当用两个搜索参数测试我的LINQ语句时,似乎必须查看搜索参数是否已输入。如果是这种情况,那么对于许多搜索参数来说,这可能变得相当不便。
// only FirstName is entered
if (!string.IsNullOrEmpty(FirstName) && string.IsNullOrEmpty(LastName))
{
var employees = DB.Employees
.Where(emp => emp.FirstName.Contains(fName));
}
// only LastName is entered
else if (string.IsNullOrEmpty(FirstName) && !string.IsNullOrEmpty(LastName))
{
var employees = DB.Employees
.Where(emp => emp.LastName.Contains(lName));
}
// both parameters are entered
else if (!string.IsNullOrEmpty(FirstName) && !string.IsNullOrEmpty(LastName))
{
var employees = DB.Employees
.Where(emp => emp.FirstName.Contains(fName))
.Where(emp => emp.LastName.Contains(lName));
}
仅供参考,我最初以为我可以只添加其中()语句来我与相关的搜索参数LINQ语句,但我注意到,没有被返回的所有记录应,因此如果 - 上述逻辑然后声明。
如果您使用的是IQueryable,则可以追加多个LINQ语句。这是LINQ到对象,还是你使用ORM来查询数据库? – cost 2014-12-03 22:42:42
@成本 - 起初,我不明白你的建议,但看到提供的答案后,我相信你是正确的。谢谢! – 2014-12-03 22:50:21