0

ドロップダウンリストを使用して検索結果を分割でフィルタリングする検索フィールドがあります。

私はついにそれをうまく機能させました、しかし今私はこれを否定するためにすべてのオプションを作りたいです。ドロップダウン値はintと同じです。私はまだ学んでいるので、これについて頭を悩ませることができる唯一の方法は、whereクエリのifelseステートメントです。私がそれをしたとき、私はたくさんの赤を見ました。

ドロップダウンリストには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();

助けてくれてありがとう!

4

1 に答える 1

1

その行を次のように置き換えてみてください:

(DDLInt == 5 || t0.DivisionID == DDLInt) &&
于 2012-10-25T21:50:25.387 に答える