2012-10-25 68 views
0

我有一個搜索字段,它使用下拉列表按部門過濾搜索結果。使用Linq刪除和添加搜索過濾器

我終於得到它的工作很好,但現在我想做一個ALL選項否定這一點。下拉值等於一個int。我仍然在學習,所以我可以改變主意的唯一方法是where查詢中的if else語句。當我這樣做時,我看到很多紅色。

下拉列表中有5個選項。值是1到5. 5 =全部。我想基本停止搜索或除去t0.DivisionID == DDLInt &&

string DDL = DDLAddDivision.SelectedValue; 
int DDLInt; 
if (int.TryParse(DDL, out DDLInt)) 
{ 
    int searchID; 
    if (!int.TryParse(txtSearch.Text.Trim(), out searchID)) 
     searchID = -1; // set to an invalid ID 


    ItemContext db = new ItemContext(); 
    var q = (from t0 in db.Item 
      join t1 in db.Categories on t0.CategoryID equals t1.CategoryID 
      join t2 in db.Divisions on t0.DivisionID equals t2.DivisionID 

      where 


       t0.DivisionID == DDLInt && 

       //Contains 

      (
      t0.ItemName.Contains(txtSearch.Text.Trim()) || 
      t0.Email.Contains(txtSearch.Text.Trim()) || 
      t0.Description.Contains(txtSearch.Text.Trim()) || 
      t0.Phone.Contains(txtSearch.Text.Trim()) || 
      t0.ItemID.Equals(searchID) 
      ) 
      group t0 by new 
      { 
       t0.ItemID, 
       t0.ItemName, 
       t0.Description, 
       t0.Phone, 
       t0.Email, 
       t0.DivisionID, 
       t0.CategoryID, 
       t1.CategoryName, 
       t2.DivisionName 


      } into i 

      select new 
      { 
       i.Key.ItemID, 
       i.Key.ItemName, 
       i.Key.Description, 
       i.Key.Email, 
       i.Key.Phone, 
       i.Key.CategoryName, 
       i.Key.DivisionName, 
       i.Key.CategoryID, 
       i.Key.DivisionID 

      }); 

    if (q.Any() == false) 
    { 
     ResultsLabelId.Visible = true; 
    } 
    else 
    { 
     ResultsLabelId.Visible = false; 
    } 

    //bind and return 
    lv.DataSource = q.ToList(); 
    lv.DataBind(); 

謝謝任何​​和所有的幫助!

+1

我們需要_all_此代碼來充分回答你的問題? –

+0

你告訴我,如果我新的答案我不會發布它。試圖確保你明白我在問什麼。我認爲越詳細越容易理解。你明白嗎?鑑於這個問題,你會如何發佈它?如果您認爲不需要,請隨意編輯它。 – jackncoke

+1

@jackncoke:你確實發佈了太多的代碼,但是你將它保留在重要的函數中。讓整個班級傾倒問題真的是我們想要預防的。 – Guvante

回答

1

如何與替換該行:

(DDLInt == 5 || t0.DivisionID == DDLInt) && 
+0

我只想非常感謝你。您不僅可以乾淨而有效地回答我的問題。你對我表示讚賞的問題給了我建設性的批評。評論只是批評,沒有改善的建議或改善建議應該在這個網站不悅,我讚揚你不是那些人之一。我很震驚這種情況有多簡單,我在這方面思考的時間太長了。 – jackncoke