2015-04-17 214 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)