2009-12-22 101 views
0

在我的控制器搜索,我这个所谓的行动方法“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; 
    } 

感谢您的帮助

回答

2

如果你不改变

if (nom == null) 

if (lastName== null) 

看起来工作得很好,当我测试了它。

+0

我已经纠正了这个错误,但是当我使用一个标准 – Richard77 2009-12-22 08:48:34

0

试试这个

if ((firstName == null) && (lastName != null) ) 
     return OneCriteria(lastName); 

IF((名字= NULL)& &(lastName的== NULL)!) 回报OneCriteria(名字);其他 返回TwoCriteria(firstName,lastName);

希望这有助于。

+0

Ali62, 我想你说的是什么仍然没有工作,没有工作。但是,在执行流程的同时。我宁愿看到“” - 空字符串,而不是null。然后我通过空字符串替换null,它工作。我不知道发生了什么。 – Richard77 2009-12-22 14:30:18

+0

很高兴在这里你自己找到你的答案。 可能在某个地方的过程中.NET将字符串空值转换为您提到的空字符串我不确定。 – ali62b 2009-12-23 07:05:13

0

你可以尝试以下方法: 如果(名字== NULL & &姓== NULL){ 做你的错误}

其他 {

VAR接触从db.Contacts接触=选择联系人;

if(firstName!= null)contacts = from FN in contacts where(FN.firstName == firstName)select FN;

if(lastName!= null)contacts = from LN in contacts where(FN。lastName == lastName)选择LN;

}

相关问题