1

我正在尝试编写一个文本框,它将在 5 个 DB 列上进行搜索,并将返回给定搜索的每个结果,例如。“红”会返回:红球、红威廉姆斯等。人们尝试过的任何例子或类似的东西。我的搜索示例代码。

谢谢。

    ItemMasterDataContext db = new ItemMasterDataContext();

    string s = txtSearch.Text.Trim();
    var q = from p in db.ITMSTs
            where p.IMITD1.Contains(s) ||
             p.IMITD2.Contains(s) ||
             p.IMMFNO.Contains(s) ||
             p.IMITNO.Contains(s) ||
             p.IMVNNO.Contains(s)
            select p;

    lv.DataSource = q;
    lv.DataBind();
4

3 回答 3

1

您的示例中的“q”将是IQueryable<ITMST>. 我不认为 WebControl 的 Datasource 属性知道如何处理它。尝试将该行写为:

 lv.DataSource = q.ToList();
于 2008-12-08T17:08:11.313 回答
0

你所拥有的通常是人们使用 linq 会做的事情。如果您想变得更复杂并使用数据库通配符,请查看 System.Data.Linq 中的 SqlMethods 类。

@James Curran 您可以分配 DataSource 属性 q ,它会正常工作。唯一不同的是查询何时被执行。

于 2008-12-10T19:05:23.213 回答
0

你可以做这样的事情(语法可能是关闭的)

using(var db = new ItemMasterDataContext())
{
    var s = txtSearch.Text.Trim();
    var result = from p in db.ITMSTs select p;

    if( result.Any(p=>p.IMITD1.Contains(s))
         lv.DataSource = result.Where(p=>p.IMITD1.Contains(s))
    else if ( result.Any(p=>p.IMITD2.Contains(s))
        lv.DataSource = result.Where(p=>p.IMITD1.Contains(s))

    lv.DataBind();
}

或者您可能想使用此链接或MSDN 中的此链接

编码快乐!!

于 2008-12-10T19:44:33.743 回答