Searching for a keyword using linq in asp.net with c # back end

    List<search> alllist = wsWSemloyee.GetAllProject(); //where search is model class contains properties..
    string search_key = "%" + txtsearch.Text.Trim() + "%";


    List<search> result = new List<search>();
    foreach (search item in alllist)
    {
     var op = (
                     from a in alllist
                     where a.Sfirstname.Contains(search_key) || a.Slastname.Contains(search_key) || a.Smob.Contains(search_key) || a.Scity.Contains(search_key) || a.Sstate.Contains(search_key)
                     //where SqlMethods.Like(a.Sfirstname,search_key)||SqlMethods.Like(a.Slastname,search_key)||SqlMethods.Like(a.Scity,search_key)||SqlMethods.Like(a.Smob,search_key)||SqlMethods.Like(a.Sstate,search_key)
                     select a
                   );

   //  List<search> lst = op.ToList<search>();
        if (op != null)
        {
            result.Add(item);
        }
    }


    if (result.Count != 0)
    {
        dgv_searchreport.DataSource = result;
        dgv_searchreport.DataBind();// data grid view
    }

      

its not working ... giving all the result present in the list. // where lookup is the model class contains properties.

+3


source to share


2 answers


This is because you are comparing if the result of your linq query is not null, then you add the variable from the foreach clause. If any single item from allproducts matches the condition, then op will never be null and then the entire collection will be contained in the result. You probably want the following:

var result = (from a in alllist
              where a.Sfirstname.Contains(search_key) 
                    || a.Slastname.Contains(search_key) 
                    || a.Smob.Contains(search_key) 
                    || a.Scity.Contains(search_key) 
                    || a.Sstate.Contains(search_key)
              select a).ToList();

      



This will display all the items that match the condition and list them in a list.

+2


source


May this help you.



      string search_key = txtsearch.Text.Trim(); // instead "%" + txtsearch.Text.Trim() + "%";

        List<search> result = new List<search>();            
        var op = (from a in alllist
                     where a.Sfirstname.Contains(search_key) || a.Slastname.Contains(search_key) || ......
                     select a);

        if(op.Count() > 0)
        result = op.ToList();

      

+1


source







All Articles