我有一段用于搜索数据库的代码。用户在这里应该有3个选项:只输入姓氏,第一个名称和用户可以使用它们进行搜索 - 姓氏和名字。
如果我提供字符串 - 姓氏和名字,此代码将从我的数据库中检索记录。但是如果我只输入其中一个,我的结果列表总是空的。
var query = from x in db.people
where (txtSurname == null || x.Surname== txtSurname.Text)
&& (txtFirstName == null || x.FirstName == txtFirstName.Text)
select x;
var data = query.ToList();
peopleBindingSource.DataSource = data;
答案 0 :(得分:5)
请记住,实体框架查询不会发送到数据库,直到您将数据实现为ToList
或迭代它为例。这意味着您可以使用以下代码构建查询:
var query = db.people.AsQueryable();
if(!string.IsNullOrEmpty(txtSurname.Text))
{
query = query.Where(p => p.Surname == txtSurname.Text);
}
if(!string.IsNullOrEmpty(txtFirstName.Text))
{
query = query.Where(p => p.FirstName == txtFirstName.Text);
}
peopleBindingSource.DataSource = query.ToList();