2014-02-15 76 views
1

我有一个MVC项目,有两个DropDown-box,您可以从两个不同的列表中进行选择。在第一个列表中选择一个年龄,在第二个列表中选择一个名称。 另外,他们都工作正常。如果我选择一个名字,视图会返回给定名字的所有人,如果我选择年龄,会发生同样的情况。问题是当我尝试将两个列表(下拉列表)组合在一起时。这里是代码:结合搜索标准

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 
} 

回答

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); 

这样,任何提供的标准适用。

+0

那是惊人的!马上工作,代码少于我的版本。 谢谢大卫! – user2915962

2

您可以linq其中方法相结合的条件

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

此代码返回persons对应于标准或一个空列表名字和年龄,如果没有结果发现