在我的控制器搜索,我这个所谓的行动方法“SearchForContact,”这需要两个字符串参数的firstName和姓氏。有3种情况:的LINQ:如何找到行两列具有相同条件的
如果两个参数都为空,该视图重新显示一个错误消息,促使用户输入所述2个参数中的至少一个
如果两个参数不为空,我可以检索联系人并在视图上显示结果
- 不幸的是,当其中任何一个参数为null时,我什么都得不到。我怀疑我没有正确写入我的Linq语句。
这里是处理该搜索声明:
var contacts = contactRepository.SearchForContacts(firstName, lastName).ToList();
这里是位于我的仓库类位于模型文件夹(ContactRepository.cs)我的辅助方法。
public IQueryable<Contact> SearchForContacts(string firstName, string lastName)
{
if (firstName == null)
return OneCriteria(lastName);
if (nom == null)
return OneCriteria(firstName);
else
return TwoCriteria(firstName, lastName);
}
private IQueryable<Contact> OneCriteria(string criteria)
{
var contacts = from contact in db.Contacts
where ((contact. firstName == criteria) ||
(contact. lastName == criteria))
orderby contact. firstName
select contact;
return contacts;
}
private IQueryable<Contact> TwoCriteria(string firstName, string lastName)
{
var contacts = from contact in db.Contacts
where ((contact. firstName == firstName) &&
(contact. lastName == lastName))
orderby contact. firstName
select contact;
return contacts;
}
感谢您的帮助
我已经纠正了这个错误,但是当我使用一个标准 – Richard77 2009-12-22 08:48:34