首页 新闻 赞助 找找看

Linq 多条件查询 如何写?

0
悬赏园豆:10 [已关闭问题]

asp.net+ sql server
多条件查询(高级搜索),假如一共可以输入5个条件,但是用户根据需要可能只输2个或3个,也肯能是4个,写查询方法是不是也需要写多个方法,还是只需要写一个方法,有好的解决方法吗,提供点思路也可以啊,请数据库高手指点。

比如有三个条件,分别对应于三个TEXtBox,tj1\tj2\tj3
可以这样构造:
sql="select * from table_name where 1=1";
if(tj1!="")
{
sql+=" and tj1='"+tj1+"'"
}
if(tj2!="")
{
sql+=" and tj2='"+tj2+"'"
}
if(tj3!="")
{
sql+=" and tj3='"+tj3+"'"
}

用linq应该如何写?

S.Benson的主页 S.Benson | 初学一级 | 园豆:10
提问于:2009-04-02 11:36
< >
分享
其他回答(3)
0

参考下面文章

《LINQ to SQL语句之动态查询》

http://space.itpub.net/?uid-12639172-action-viewspace-itemid-364778

MSDN 的参考文档

http://msdn.microsoft.com/zh-cn/library/bb882636.aspx

eaglet | 园豆:17139 (专家六级) | 2009-04-02 12:40
0

动态查询是正解,不过楼上给的文章倒不怎么切题。

主要就是拼接条件,最后执行。

风海迷沙 | 园豆:4453 (老鸟四级) | 2009-04-02 14:25
0

兄台,要说说如何拼条件啊

跳舞的代码 | 园豆:205 (菜鸟二级) | 2012-01-18 22:23
0
--这是一个方法,返回IList<AtAGlanceDetail>
--
public IList<AtAGlanceDetail> GetAtAGlanceReportByCondition(int? supplierId, string container, DateTime? ETA, string FOBPoint, string HBLNum, DateTime? motherVesselETD, string voyage) 
{ 
var data = GetAll().Where(c => c.SupplierId == supplierId && c.Container == container && c.ETA == ETA && c.FOBPoint == FOBPoint && c.HBLNum == HBLNum && c.MotherVesselETD == motherVesselETD && c.Voyage == voyage).AsQueryable(); 
return data.ToList();

 }

linq的 多条件拼接 是使用
dataSouce.Where(c => c.SupplierId == supplierId(条件参数) && c.Container == container && c.ETA == ETA ) 这种格式的写法
shzy2012 | 园豆:224 (菜鸟二级) | 2013-07-18 18:10

关键是条件的个数不一定。不想把所有数据一次性load到内存中,想像以前一样,通过条件,只把有用的load到内存中

支持(0) 反对(0) martuis | 园豆:200 (初学一级) | 2015-01-09 17:15

@martuis:  Linq 在调用 ToList() 时候,才回到执行查询,多个条件可以像这样写

var list = this.PaySetupPaymentHeaderDao.GetAll().AsQueryable();

// SN
if (this.ddlSN.SelectedValue != "[Select]")
{
list = list.Where(x => x.SN == this.ddlSN.SelectedValue);
}

// Supplier
if (this.ddlSearchSupplier.SelectedValue != "[Select]")
{
list = list.Where(x => x.SupplierId == GetFormatInt(this.ddlSearchSupplier.SelectedValue));
}

 

return list.ToList();

支持(1) 反对(0) shzy2012 | 园豆:224 (菜鸟二级) | 2015-01-14 10:18

@shzy2012: 恩恩,非常感谢您的回答。

支持(0) 反对(0) martuis | 园豆:200 (初学一级) | 2015-01-14 11:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册