0

我有一个包含五个文本框的页面,每个文本框代表我的数据库表中的一个字段和一个搜索按钮: 在此处输入图像描述

如果我使用 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,我似乎无法动态更改搜索条件。

任何建议将不胜感激!

4

2 回答 2

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);
于 2013-04-11T15:50:25.967 回答
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;
于 2013-04-11T15:52:29.537 回答