2012-10-26 59 views
1

我正面臨以下問題。我想要一個帶有DropDowList的搜索字段,用戶可以在其中選擇他想要搜索的項目。我必須使用這個LINQ代碼而不僅僅是一個SQL查詢。將DropDownList值轉換爲Linq查詢,其中子句爲

這裏是我的代碼:

var Metadata = from m in db.Metadatas 
    join mm in db.Multimedias 
    on m.multimediaID equals mm.multimediaID 
    where (m. { Here would i have the selected value from the dropdownlist. } .ToString().Contains(textboxvalue) || 
      mm. { Here would i have the selected value from the dropdownlist. } .ToString().Contains(textboxvalue)) 
      && mm.filetype.ToString().Contains(radiobuttonvalue) 

我希望把這樣的:「Dropdownlist.selectedvalue」進入該地區{這裏將我從下拉列表選擇的值。 }

我希望你們瞭解我的想法和問題。

+2

你的問題是什麼?你永遠不會說出來。 – peroija

+0

我想在我所說的地區有我的「dropdownlist.selectedvalue」{這裏我會從下拉列表中選擇一個值。 } – Haidy

回答

0

只要改變你的SQL查詢:

如果(supportgrp.SelectedItem.Text == 「全部」)

SQL = 「SELECT * FROM QlyData其中日期> ='」 + txtstartdate.Text +「 '和日期< ='「+ txtenddate.Text +」'「;

別的

SQL = 「SELECT * FROM QlyData其中日期> ='」 + txtstartdate.Text + 「 '和日期< ='」 + txtenddate.Text + 「 '和suppgrp ='」 + supportgrp。文字+「'」;

1

我不知道你爲什麼要在linq語句中加入。如果Linq已經知道對象之間的關係,那麼這不是必需的,因爲數據庫中存在外鍵關係設置。

你可以做的是這樣的:

var Metedata = db.Metadatas; 

switch(Dropdownlist.selectedvalue) 
{ 
    case "one": 
    Metadata = Metadata.Where(m => m.{selected value field}.Contains(textboxvalue)); 
    break; 

    case "two": 
    Metadata = Metadata.Where(m => m.{selected value field}.Contains(textboxvalue)); 
    break; 

    //More use cases 
} 

我不知道你會被選擇出來的時候你做的單子,但如果涉及到相關對象(如Multimedias),那麼你可能想查看DataLoadOptions(LinqToSQL)或.Include()(EntityFrameworks)。

+0

好的謝謝!我想我可以用這個做點什麼... – Haidy