gpt4 book ai didi

c# - 具有多个搜索条件的笨拙的 LINQ 语句

转载 作者:太空狗 更新时间:2023-10-29 20:04:35 24 4
gpt4 key购买 nike

我有一个包含多个搜索条件的表单,用户可以使用它来搜索员工数据,例如名字、姓氏、雇用日期、部门等

我正在使用 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));
}

仅供引用,我最初认为我可以使用相关的搜索参数将 Where() 语句附加到我的 LINQ 语句,但我注意到并不是所有的记录都应该返回,因此 if-then 语句的上述逻辑。

最佳答案

像这样的事情怎么样:

IQueryable<Employee> employees = DB.Employees;

if (!string.IsNullOrEmpty(FirstName))
{
employees = employees
.Where(emp => emp.FirstName.Contains(fName));
}
if (!string.IsNullOrEmpty(LastName))
{
employees = employees
.Where(emp => emp.Last.Contains(lName));
}

关于c# - 具有多个搜索条件的笨拙的 LINQ 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27283010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com