我有一个包含五个文本框的页面,每个文本框代表我的数据库表中的一个字段和一个搜索按钮:
如果我使用SQL,我可以根据哪些字段包含数据来构建我的SQL语句。
但是,我想使用LINQ,我对如何实现这一点感到茫然。例如,看看下面的查询:
var db = new BookDBDataContext();
var q =
from a in db.Books
where a.Title.Contains(txtBookTitle) &&
a.Author.Contains(txtAuthor) &&
a.Publisher.Contains(txtPublisher)
select a.ID;
上面的查询将返回所有字段与表中的数据匹配的数据。但是,如果用户没有在txtAuthor字段中输入作者怎么办?如果我将其构建为查询字符串,我可以检查每个字段的数据并将其添加到查询字符串中。由于这是LINQ,我似乎无法动态更改搜索条件。
任何建议都会非常感激!
答案 0 :(得分:4)
var db = new BookDBDataContext();
var q = (from a in db.Books
where a.Title.Contains(txtBookTitle));
if(!String.IsNullOrEmpty(txtAuthor))
{
q = q.Where(a => a.Author.Contains(txtAuthor));
}
if(!String.IsNullOrEmpty(txtAuthor))
{
q = q.Where(a => a.Publisher.Contains(txtPublisher));
}
var id = q.Select(a => a.ID);
答案 1 :(得分:1)
from a in db.Books
where (string.isNullorWhiteSpace(search) || a.Title.Contains(search)) &&
(string.isNullorWhiteSpace(txtAuthor) || a.Author.Contains(txtAuthor) ) &&
(string.isNullorWhiteSpace(txtPublisher) || a.Publisher.Contains(txtPublisher))
select a.ID;