2017-03-27 90 views
0

我有一个文本框,按钮和GridView;我想在多列中搜索。 它的工作原理,但当然在最后一种情况下,并忽略了上述情况,所以当我的数据库中存在任何值的情况下需要进行筛选。我该怎么做才能做到这一点? 这是我的代码。使用linq搜索

protected void btn_search_Click(object sender, EventArgs e) 
{ 
    Item item = new Item(); 

    //Search by item_name 
    using (SupermarketEntities1 DB = new SupermarketEntities1()) 
    { 
     item.item_name = txt_search.Text; 

     itemGridView.DataSource = DB.Items.Where(x => x.item_name .Contains(item.item_name)) 
      .Select(x =>new { 
        x.item_id, 
        x.item_name, 
        x.item_unit, 
        x.Department.depart_name, 
        x.prod_date, 
        x.exp_date, 
        x.sale_price, 
        x.purchase_price, 
       }).ToList(); 
     itemGridView.DataBind(); 
    } 

    //Search by item_unit 
    using (SupermarketEntities1 DB = new SupermarketEntities1()) 
    { 
     item.item_unit = txt_search.Text; 

     itemGridView.DataSource = DB.Items.Where(x => x.item_unit.Contains(item.item_unit)) 
      .Select(x => new { 
       x.item_id, 
       x.item_name, 
       x.item_unit, 
       x.Department.depart_name, 
       x.prod_date, 
       x.exp_date, 
       x.sale_price, 
       x.purchase_price, 
      }).ToList(); 
     itemGridView.DataBind(); 
    } 

    //Search by sale_price 
    using (SupermarketEntities1 DB = new SupermarketEntities1()) 
    { 
     item.sale_price = Convert.ToDecimal(txt_search.Text); 

     itemGridView.DataSource = DB.Items.Where(x => x.sale_price == item.sale_price) 
      .Select(x => new 
      { 
       x.item_id, 
       x.item_name, 
       x.item_unit, 
       x.Department.depart_name, 
       x.prod_date, 
       x.exp_date, 
       x.sale_price, 
       x.purchase_price     
      }).ToList(); 
     itemGridView.DataBind(); 
    } 

回答

1

你要找的操作是逻辑操作:||

在你.Where()条款,你会检查是否有任何值匹配的。事情是这样的:

DB.Items.Where(x => 
    x.item_name.Contains(item.item_name) || 
    x.item_unit.Contains(item.item_unit) || 
    x.sale_price == item.sale_price) 

因此,建立你的item对象无论你需要,那么就得在.Where()条款与所有比较的 LINQ查询,而查询的结果设置为您的数据源。

+0

它的工作,但同样的问题,如果x.sale_price == item.sale_price)情况下存在所以我哈希它,它工作正常 – hazem