我是ASP.Net和LINQ的新手。我有一个小项目,我正在努力。它基本上由一个带有四个文本框的屏幕,一个listview控件和一个带有一个数据库表的搜索按钮组成。
每个文本框代表某个字段:作者,标题,发布者和价格。我设想的是用户可以在一个或多个字段中输入文本并点击搜索按钮。然后程序将返回符合用户标准的任何结果。
如果我使用的是SQL语句,我只需选择与任何输入字段匹配的每条记录(即SELECT作者,标题,出版商,价格FROM books WHERE ...)。但是,我不太确定如何使用LINQ执行此操作。
那么,有没有人有我的起点?我已经看过LINQ示例,其中一个字段作为搜索限制器:
public void SimpleSearch()
{
DataClasses1DataContext dc = new DataClasses1DataContext();
var q =
from a in dc.GetTable<Books>()
where a.Title == "1984"
select a;
dataGridView1.DataSource = q;
}
但我似乎无法找到在搜索中使用多个限制器的任何其他示例。我开始认为这是不可能的。如果是这样,有人可以推荐一种不同的方式让我完成我想要做的事情吗?基本上,我只想在表格中搜索与用户输入相匹配的字段,并在列表视图中返回结果。任何帮助都会非常感激。
答案 0 :(得分:2)
您应该可以使用||
作为OR分隔符:
public void SimpleSearch()
{
DataClasses1DataContext dc = new DataClasses1DataContext();
var q =
from a in dc.GetTable<Books>()
where a.Title == "1984" || a.Author == "Stephen King" || a.Price == 5.99m
select a;
dataGridView1.DataSource = q;
}
您还可以使用&&
进行AND搜索,而不是||
答案 1 :(得分:1)
我喜欢使用contains来使搜索更加模糊,而且我喜欢将所有内容设置为小写,因此在执行搜索时不会出现区分大小写问题。
public void SimpleSearch()
{
DataClasses1DataContext dc = new DataClasses1DataContext();
var search = txtSearch.Text.ToLower();
var q =
from a in dc.GetTable<Books>()
where a.Title.ToLower() == search ||
a.Author.ToLower() == search ||
a.Author.ToLower().Contains(search) ||
a.Title.ToLower().Contains(search)
select a;
dataGridView1.DataSource = q;
}