使用linq在asp.net中使用多个控件搜索多个列

本文关键字:控件 搜索 linq asp net 使用 | 更新日期: 2023-09-27 18:08:04

Project_Detail pro = new Project_Detail();
string title=Ttitle.Text;
string year1=Tyear.Text;
string key = Tkeywrds.Text;
string area = Ddl_area.Text;
string categ = Ddl_catgry.Text;
string tech = Ddl_tech.Text;
string type =Ddl_type.Text;
var q = from obj in da.Project_Details
        where obj.Project_Title.Contains(title) 
              || obj.Submission_Date.Contains(year1) 
              || obj.Keywords.Contains(key) 
              || obj.Project_Area.Contains(area) 
              || obj.Project_Category.Contains(categ) 
              || obj.Project_Technology.Contains(tech) 
              || obj.Project_Type.Contains(type)
        select obj;
if (q != null)
{
    DetailsView1.DataSource = q;
    DetailsView1.DataBind();
}
else
{
    Literal1.Text = "Data not found";
}

这个代码给出了表的最后一条记录,也没有给出else条件的结果。我想要所有条件的结果,并想使用LIke语句。

使用linq在asp.net中使用多个控件搜索多个列

q永远不会为空。不过,它可能是空的。所以你应该把代码改成

if (q.Any()) // <<-----
{
    DetailsView1.DataSource = q;
    DetailsView1.DataBind();
}
else
{
    Literal1.Text = "Data not found";
}

您也可以使用计数方法.Count()

if (q.count()>0)
{
    DetailsView1.DataSource = q;
    DetailsView1.DataBind();
}
else
{
    Literal1.Text = "Data not found";
}