【问题标题】:Search multiple column using multiple control in asp.net using linq使用 linq 在 asp.net 中使用多个控件搜索多个列
【发布时间】:2013-04-08 06:42:08
【问题描述】:
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";
}

这段代码给出了表的最后一条记录,也没有给出其他条件结果。 我想要所有条件的结果,并想使用 Like satatement。

【问题讨论】:

  • 如果你想使用 sql 像:SqlMethods.Like(obj.parameter).
  • 如果任何搜索字符串为空,您的查询将返回所有元素,因为myString.Contains("") 始终返回true

标签: c# asp.net sql-server linq linq-to-sql


【解决方案1】:

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

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

【讨论】:

  • 它不能与多个搜索选项一起使用。它与像 obj.Project_Title.Contains(title) 这样的一个查询一起工作,但是当有多个条件时,比如 obj.Project_Title.Contains(title) || obj.Submission_Date.Contains(year1) || obj.Keywords.Contains(key) || obj.Project_Area.Contains(区域) || obj.Project_Category.Contains(categ) || obj.Project_Technology.Contains(tech) || obj.Project_Type.Contains(type) 它不起作用。它给出了表中的所有记录请帮助...
  • 问题是你的where 子句。如果您有可用的分析器,请获取查询并检查您的数据。
  • Linq 查询多控制多搜索操作
  • 问题在于你的逻辑。如果要比较的任何字符串为空,会发生什么情况?
【解决方案2】:

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

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

【讨论】:

  • 它不能与多个搜索选项一起使用。它与像 obj.Project_Title.Contains(title) 这样的一个查询一起工作,但是当有多个条件时,比如 obj.Project_Title.Contains(title) || obj.Submission_Date.Contains(year1) || obj.Keywords.Contains(key) || obj.Project_Area.Contains(区域) || obj.Project_Category.Contains(categ) || obj.Project_Technology.Contains(tech) || obj.Project_Type.Contains(type) 它不起作用。它给出了表中的所有记录请帮助...
猜你喜欢
  • 2021-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-23
  • 1970-01-01
  • 1970-01-01
  • 2022-01-26
相关资源
最近更新 更多