我有一个访问数据库,其中包含诸如“职务”,“导演”和“年份”之类的列。
我已将Access数据库连接到该程序。只有标题包含一个单词时,我才可以搜索数据库并将电影的标题打印到listBox中。例如,如果我搜索电影“ psycho”,则该电影将显示在listBox中。
现在,我想知道如何搜索“ the”之类的特定单词并将所有带有“ the”的电影标题打印到列表框。
那时,我正在使用的教科书无法深入探讨。也许我没有为尝试使用的方法使用正确的方法。
private void searchButton_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
string lowerCaseData = textBox1.Text.ToLower();
if (titleButton.Checked)
{
var query =
from m in this.moviesDataSet.Movies
where m.Title == lowerCaseData
select m;
foreach (var m in query)
{
listBox1.Items.Add(m.Title);
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'moviesDataSet.Movies' table. You can move, or remove it, as needed.
this.moviesTableAdapter.Fill(this.moviesDataSet.Movies);
}
而不是精确匹配检查 Contains
根据LINQ提供程序的不同,Contains
检查应转换为LIKE
不区分大小写的SQL语句,因此您的检查应为:
where m.Title.Contains(lowerCaseData)
但是,对于内存中的集合,Contains
将执行区分大小写的匹配。在这种情况下,String.IndexOf
可以像这样使用:
where m.Title.IndexOf(lowerCaseData, StringComparison.OrdinalIgnoreCase) >= 0)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句