C#IQueryable无法正常工作

时间:2016-08-09 12:24:53

标签: c# sql .net linq iqueryable

我有一个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周前,这项工作还有一年多的时间。我不知道我的代码是否发生了某些变化...如果我添加了引用或者某些内容进行了此更改。

知道为什么吗? 谢谢!

1 个答案:

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