结合搜索条件

时间:2014-02-15 14:20:04

标签: c# asp.net-mvc if-statement

我有一个带有两个DropDown框的MVC项目,您可以从两个不同的列表中进行选择。在第一个列表中选择年龄,在第二个列表中选择一个名称。 另外,他们都很好。如果我选择一个名称,视图将返回具有给定名称的所有人,如果我选择年龄,则会发生同样的事情。问题是当我尝试组合两个列表(下拉列表)时。这是代码:

else if (!string.IsNullOrEmpty(age) && (string.IsNullOrEmpty(name)))
{
    return View(person.Where(d => d.age == ages));
}
else if (string.IsNullOrEmpty(age) && (!string.IsNullOrEmpty(name)))
{
    return View(person.Where(c => c.name == names));
}
else if (!string.IsNullOrEmpty(age) && (!string.IsNullOrEmpty(name)))
{
    //CODE TO RETURN VIEW MATCHING BOTH CRITERIA
    // For example: IF age is 25 and Name is Bob,  i´d like to display all
    // 25-year olds named BOB...If there is no 25y/old named bob
    // return an empty list
}

2 个答案:

答案 0 :(得分:3)

您可以合并.Where()子句并简化所有这些。然后只需构建条件并使用单个return语句。像这样:

if (!string.IsNullOrEmpty(age))
    person = person.Where(d => d.age == ages);
if (!string.IsNullOrEmpty(name))
    person = person.Where(c => c.name == names);
return View(person);

这样就可以应用任何提供的标准。

答案 1 :(得分:2)

您可以将条件与linq 方法

结合使用
if (!string.IsNullOrEmpty(age) && !string.IsNullOrEmpty(name))
{
   return View(person.Where(p => p.name == name && p.age == age).ToList());
}

此代码返回persons,其名称和年龄对应于条件,如果未找到结果,则返回空列表