2015-04-17 46 views
0

我有一个访问数据库,其中包含标题,导演和年份等列。在访问数据库中搜索单词的一部分

我有访问数据库连接到程序。我能够搜索数据库,并且只有标题包含一个单词时才能将电影的标题打印到列表框中。例如,如果我搜索电影“心理”,电影将显示在列表框中。

现在我想知道如何搜索像“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); 

    } 
+0

'那里m.Title.Contains(lowerCaseData)'知道,这是一个性能命中。 – Stefan

回答

1

而是精确匹配检查Contains


根据LINQ提供程序的,Contains检查应转换为SQL LIKE声明,这将是区分大小写的,所以你的检查应该是:

where m.Title.Contains(lowerCaseData) 

但是,对于内存中的收藏,Contains将执行区分大小写的匹配。在这种情况下String.IndexOf可以使用,如:

where m.Title.IndexOf(lowerCaseData, StringComparison.OrdinalIgnoreCase) >= 0) 
+1

谢谢你的帮助! – SolidFire

0

where查询做一个精确匹配。使用Contains代替

where m.Title.ToLower().Contains(lowerCaseData) 
相关问题