搜索中的非必填字段

时间:2017-04-17 14:26:08

标签: c# sql entity-framework

我有一段用于搜索数据库的代码。用户在这里应该有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;

1 个答案:

答案 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();
相关问题