2009-04-02 5 views
0

Ich benutze VB.NET und Linq zu SQL. Ich habe einen Tisch mit Tausenden von Zeilen und wächst. Im Moment verwende ich .Contains() in der Where-Klausel, um die Abfrage durchzuführen. Unten ist meine Suchfunktion:Effiziente Suchfunktion mit Linq zu SQL

Public Shared Function DemoSearchFunction(ByVal keyword As String) As DataTable 

    Dim db As New BibleDataClassesDataContext() 
    Dim query = From b In db.khmer_books _ 
       From ch In db.khmer_chapters _ 
       From v In db.testing_khmers _ 
       Where v.t_v.Contains(keyword) And ch.kh_book_id = b.kh_b_id And v.t_chid = ch.kh_ch_id _ 
       Select b.kh_b_id, b.kh_b_title, ch.kh_ch_id, ch.kh_ch_number, v.t_id, v.t_vn, v.t_v 


    Dim dtDataTableOne = New DataTable("dtOne") 
    dtDataTableOne.Columns.Add("bid", GetType(Integer)) 
    dtDataTableOne.Columns.Add("btitle", GetType(String)) 
    dtDataTableOne.Columns.Add("chid", GetType(Integer)) 
    dtDataTableOne.Columns.Add("chn", GetType(Integer)) 
    dtDataTableOne.Columns.Add("vid", GetType(Integer)) 
    dtDataTableOne.Columns.Add("vn", GetType(Integer)) 
    dtDataTableOne.Columns.Add("verse", GetType(String)) 

    For Each r In query 
     dtDataTableOne.Rows.Add(New Object() {r.kh_b_id, r.kh_b_title, r.kh_ch_id, r.kh_ch_number, r.t_id, r.t_vn, r.t_v}) 
    Next 
    Return dtDataTableOne 


End Function 

Ich würde gerne andere Methoden für die effiziente Suche mit Linq zu SQL wissen. Vielen Dank.

Antwort

0

Ich würde vorschlagen, keine Datentabelle, sondern eine IEnumerable oder IList Sammlung von stark typisierten Objekten zu verwenden. Sie können dieses Thema auch nach einer anderen Lösung durchsuchen: Advanced Search in Linq to SQL possible?