LINQ 动态查询(多条件)

问题描述

小弟,没有接触过linq,现在项目需要一个linq查询,还有点复杂。求大神指教。现有一个List<Marker>list数据源,Marker有(id,type【type1,type2,type3....】,status【status1,status2,status3.....】三个属性),根据List<string>typeList和List<string>statusList进行过滤(两个list可能只有一个,可能都存在,所以需要动态查询)。例如typeList={type1,type3};statusList={status1,status4}或者typeList为空statusList={status1}过滤List<Marker>list数据源得到resultList,怎么求得这个resultList。代码需要这样形式的:ParameterExpressionc=Expression.Parameter(typeof(Customer),"c");Expressioncondition=Expression.Constant(false);foreach(stringsinstarts){Expressioncon=Expression.Call(Expression.Property(c,typeof(Customer).GetProperty("CustomerID")),typeof(string).GetMethod("StartsWith",newType[]{typeof(string)}),Expression.Constant(s));condition=Expression.Or(con,condition);}Expressionbool>>end=Expression.Lambdabool>>(condition,newParameterExpression[]{c});

解决方案

本帖最后由 q107770540 于 2014-10-31 13:23:18 编辑
解决方案二:

解决方案三:

解决方案四:
参考我的。应该和我这个类似。
解决方案五:
贴出你的数据和预期的结果。如果你不能写Lambda,可以写SQL,帮你改写。如果你能写出Lambda,但是不会写表达式树,你可以先写好Lambda。帮你改写。
解决方案六:
LINQ查询结果绑定到DataList控件示例//DataList控件设置<asp:DataListID="DataList1"runat="server"><ItemTemplate><tablealign="center"cellpadding="0"cellspacing="0"width="543"><tr><tdclass="huise"><spanclass="shenlancu">『<%#DataBinder.Eval(Container.DataItem,"type")%>』</span><spanclass="banhui"><%#DataBinder.Eval(Container.DataItem,"title")%><br/></span><spanclass="banhui">&nbsp;<%#DataBinder.Eval(Container.DataItem,"info")%><br/></span><spanclass="chengse">&nbsp;联系人:<%#DataBinder.Eval(Container.DataItem,"linkMan")%>&nbsp;&nbsp;联系电话:<%#DataBinder.Eval(Container.DataItem,"tel")%></span></td></tr><trstyle="color:#000000"><tdalign="center"><imgheight="1"src="images/longline.gif"width="525"/></td></tr><trstyle="color:#000000"><tdheight="10"></td></tr></table></ItemTemplate></asp:DataList>//查询结果绑定protectedvoidPage_Load(objectsender,EventArgse){LinqDBDataContextlqDB=newLinqDBDataContext(ConfigurationManager.ConnectionStrings["db_LinQConnectionString1"].ConnectionString.ToString());//创建查询表达式varresult=fromuinlqDB.tb_infowhereu.ID>1selectnew{Type=u.type,Title=u.title,Info=u.info,LinkMan=u.linkman,Tel=u.tel};//绑定查询结果DataList1.DataSource=result;DataList1.DataBind();}

时间: 2024-10-02 04:48:08

LINQ 动态查询(多条件)的相关文章

linq 动态查询字段的问题。

问题描述 代码目的是将select中的字段参数化.privateIEnumerable<dynamic>QueryUser(Func<UserDB,dynamic>selector){using(varuser=newUserContext()){varquery=fromuinuser.UserDBsselectselector(u);returnquery.ToList();}}privatedynamicSelectUserField(UserDBu){returnnew{u

继LINQ动态组合查询PredicateExtensions讲解

        在LINQ动态组合查询中我留下了一个问题就是PredicateExtensions.在这里很简单不需要什么多的基础只要比会And.Or逻辑运算数学知识就够了. 先贴上代码好分析:   代码 public static class PredicateExtensions     {         public static Expression<Func<T, bool>> True<T>() { return f => true; }      

Linq to Sql:N层应用中的查询(下): 根据条件进行动态查询

如果允许在UI层直接访问Linq to Sql的DataContext,可以省去很多问题,譬如在处理多表join的时 候,我们使用var来定义L2S查询,让编译器自动推断变量的具体类型 (IQueryable<匿名类型>), 并提供友好的智能提示:而且可以充分应用L2S的延迟加载特性,来进行动态查询.但如果我们希望将业 务逻辑放在一个独立的层中(譬如封装在远程的WCF应用中),又希望在逻辑层应用Linq to sql,则情况 就比较复杂了:由于我们只能使用var(IQueryable<匿

linq to sql的多条件动态查询(上)

linq  to sql的多条件动态查询确实是一件头痛的事情,用表达式树或反射方法要写一大堆代码,有时候想想与其这么复杂,还不如回到手动sql拼接的年代,但是技术总是向前发展的,终归还是要在linq上解决这一问题,无意在网上发现一个还算比较简单的办法,分享一下: void ShowData()     {        using (DBDataContext db = new DBDataContext(Database.ConnectionString))        {         

Linq To Sql进阶系列(七)动态查询续及CLR与SQL在某些细节上的差别

在上面一篇文章Linq To Sql进阶系列(六)中,我们提到了使用object的动态查询.本文在上文的 基础上,再做更加深入的引申.同时修正上文中一些不妥的地方. 1, object的动态查询续 首先要做的事情,就是将Find的函数改成扩展方法.扩展方法只能放在静态类里,而且它的第一个参 数必须带this关键字.在上文中,作者留下了一个迷题.当需要or条件时,又该如何做呢?本文也将这 个问题给出回答.但是对于动态Like的条件,笔者依然还没有找到一个较好的方法.为了增加or条件, 函数的声明也

Linq To Sql进阶系列(六)用object的动态查询与保存log篇

动态的生成sql语句,根据不同的条件构造不同的where字句,是拼接sql 字符串的好处.而Linq的推 出,是为了弥补编程中的 Data != Object 的问题.我们又该如何实现用object的动态查询呢? 1,用object的查询是什么? 我们可以简单的举这么一个例子.我们到公安局查找一个人.首先,我们会给出他的一些特征,比如 ,身高多少,年龄多少,性别,民族等.那么,我们把这个人的一些特征输入电脑.我们希望,电脑能 给我们返回这个人的信息.而实际上,有相同特征的人太多了,常常返回一个集

linq to dataset 动态查询的一个问题

问题描述 //这个表示选择第一个条件筛选出来的user_novarquery1=(fromtinds.Tables[0].AsEnumerable()grouptbyt.Field<string>("user_no")intogletfact_charge=g.Sum(p=>p.Field<decimal>("fact_charge"))wherefact_charge>cselectnew{user_no=g.Key}).Dis

艾伟_转载:打造优雅的Linq To SQL动态查询

首先我们来看看日常比较典型的一种查询Form 这个场景很简单:就是根据客户名.订单日期.负责人来作筛选条件,然后找出符合要求的订单. 在那遥远的时代,可能避免不了要写这样的简单接口: public interface IOrderService{ IList<Order> Search(string customer, DateTime dateFrom, DateTime dateTo, int employeeID);} 具体爱怎么实现就怎么实现啦,存储过程,ORM框架.这里假定是用了孩童

ASP的多条件动态查询

动态|条件 当用ASP与SQL Server数据库打交道时,查询语句是必不可少的.SQL Server数据库本身提供了丰富的查询语句,但是如何在ASP中实现对SQL Server数据库的多条件动态查询呢?笔者在用ASP开发一个基于SQL Server的网站时,较好地解决了这一问题,本文介绍其中的实现方法. 数据库的定义 在SQL Server中定义一个数据库,名称为"comm_server".在该数据库中定义一个表,表名为"operator",包含如下表所示字段 (