C#asp.net使用%过滤数据表就像sql server一样:columtext like'%a%b%'

时间:2017-09-13 09:54:33

标签: c# sql asp.net

我在使用%

过滤数据表时遇到问题

当我使用SQL服务器查询搜索字符串时,我希望得到相同的结果:

select PatientName
from table
where patientname like '%d%k%'

结果: 迪士尼孔 DK约翰 驴

如何使用数据表过滤器获得相同的结果?

我尝试过使用:

tbl.Select("patientname like '%d%k%'", "PatientName DESC")

并收到错误。

语法的工作原理如下:

tbl.Select("patientname like '%d k%'", "PatientName DESC")

但它不会返回我想要的结果..

有人能帮助我吗?

这是我的完整代码:

    protected void cboProductMEIIT_ItemRequested(object o, RadComboBoxItemsRequestedEventArgs e)
    {
        RadComboBox cboProductMEIIT = (RadComboBox)o;

        string sFindStr = e.Text.Trim();
        string sFilter = " AreaID = '" + Sumber + "' And DescriptionTrim Like '%" + sFindStr + "%'  ";


        cboProductMEIIT.DataSource = ((DataTable)Session["dtbAbbrev_" + Sumber]).Select(sFilter, "SequenceNo DESC, Description Asc").Take(15);
        cboProductMEIIT.DataBind();
    }

我将会话设置为datatable,我想过滤该数据表。

问候

3 个答案:

答案 0 :(得分:2)

DataTable.Select无法做到。

“通配符”标题下的documented here

  

字符串中间不允许使用通配符。例如,不允许使用'te * xt'。

答案 1 :(得分:0)

看起来你正在尝试使用LINQ。如果你要显示代码行,请使用``tags。

LINQ中的LIKE与SQL有点不同。编写LINQ查询可以如下

var results = from c in db.tbl
where SqlMethods.Like(c.patientname, $"%{searchString}%")
select c;

如果需要订单

var results = from c in db.tbl
where SqlMethods.Like(c.patientname, $"%{searchString}%")
orderby c.patientname descending
select c; 

答案 2 :(得分:0)

尝试这个

替换你的代码

string sFilter = " AreaID = '" + Sumber + "' And DescriptionTrim Like '%" + sFindStr + "%'  ";

string sFilter = " AreaID = '" + Sumber + "' ";
                         if (sFindStr.IndexOf(" ") == -1) { sFilter = sFilter + " And DescriptionTrim Like '%" + sFindStr + "%' "; } else {
    int iSpc = sFindStr.IndexOf(" ");
    string sA = sFindStr.Substring(0, iSpc);
    string sB = sFindStr.Substring(iSpc + 1, sFindStr.Length - (iSpc + 1));
    sFilter = sFilter + " And DescriptionTrim Like '%" + sA + "%' And DescriptionTrim Like '%" + sB + "%'  "; }

没有解决,但没什么帮助..