LINQ查询返回多个结果

时间:2008-12-08 16:48:43

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

我正在尝试编写一个文本框,它将搜索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();

3 个答案:

答案 0 :(得分:1)

您的示例中的

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

 lv.DataSource = q.ToList();

答案 1 :(得分:0)

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

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

答案 2 :(得分: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中使用此Link或此Link

快乐编码!!