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