我有一个Contacts
函数,它从数据库中的IQueryable<Contact> resultContacts = db.Contacts;
if(request['Name'] != "")
{
resultContacts = resultContacts.Where(a => a.Name.Contains(Name));
}
if(request['Phone'] != "")
{
resultContacts = resultContacts.Where(a => a.Phone.Equals(Phone));
}
if(request['Company'] != "")
{
resultContacts = resultContacts.Where(a => a.Company.Contains(Company));
}
return resultContacts;
表中获取所有记录,然后根据用户在搜索表单中选择的值过滤它们。结果在当时过滤了一个过滤器。
resultContacts.Where
问题是现在这不起作用。由于某种原因,每个if
内的resultContacts
重置为我在第一行上的原始resultContacts
。例如:当我调试时,更改应用于1st if(我最终得到100个记录中的10个),但当我进入第2个if时,代码查询原始if
,而不是10我有第一个class Face {
Set<Character> Faces = new HashSet<Character>(
Arrays.asList('2','3','4','5','6','7','8','9','T','J', 'Q', 'K', 'A')
);
}
的结果。
直到2周前,这项工作还有一年多的时间。我不知道我的代码是否发生了某些变化...如果我添加了引用或者某些内容进行了此更改。
知道为什么吗? 谢谢!
答案 0 :(得分:-2)
var results = db.Contacts
.Where(a => request["Company"] == String.Empty || a.Company.Contains(Company))
.And(a => request["Phone"] == String.Empty || a.Phone.Equals(Phone))
.And(a => request["Name"] == String.Empty || a.Name.Contains(Name)));