linq to entities-Linq to entities 多条件查询问题不知道有什么方法呢。

问题描述

Linq to entities 多条件查询问题不知道有什么方法呢。
在用实体类建模时候,用Linq根据条件查询数据表,对于多个条件的查询,原来是需要什么条件就写一个方法,在开发途中发现条件确实是太多= =,

便想用几个公用方法来包含这些条件,也就是条件为空的时候不执行这个where罢了 比如:

        if (FromUserId != """" && ToUserId != """")        {            var query = from p in entities.T_Complaint                        where                        p.C_FromUserId.Equals(FromUserId)                        && p.C_ToUserId.Equals(ToUserId)                        select p;        }.....

但是这两个条件就需要判断三次,这时候想用这个方法来解决

        var query = from p in entities.T_Complaint                    where                     (FromUserId.Equals("""")) ? true : p.C_FromUserId.Equals(FromUserId)                    && (ToUserId.Equals("""")) ? true : p.C_ToUserId.Equals(ToUserId)                    select p;

可是Linq不支持条件啊,三元判断压根没用。不知道有什么方法呢。

解决方案

 var query =  entities.T_Complaint;if (FromUserId != """")    query = query.Where(x => x.FromUserId == FromUserId);if (ToUserId !="""")   query = query.Where(x => x.ToUserId == ToUserId);

解决方案二:
lz以前用的是Java?恭喜弃暗投明。字符串比较不再需要什么equals这种怪异的写法了。

解决方案三:
效率上没有差别,从最终生成的SQL语句上就看的出来了

http://blog.csdn.net/q107770540/article/details/5724013

解决方案四:
恩,我想问下 如果FromUserId 和ToUserId 都不为空的时候
query = query.Where(x => x.FromUserId == FromUserId&&x.ToUserId == ToUserId);
和query = query.Where(x => x.FromUserId == FromUserId);
query = query.Where(x => x.ToUserId == ToUserId);
这个效率有差别么。

时间: 2025-01-31 01:56:47

linq to entities-Linq to entities 多条件查询问题不知道有什么方法呢。的相关文章

linq to sql中,如何解决多条件查询问题,答案,用表达式树!_实用技巧

本篇适合于规模较小的数据量,对于大数据量,需要用另外的方式,见下一篇 首先,从网上搜,是必不可少的,大概了解了一下linq 多条件组合查询的方向,就开始动手了,首先,写一个委托的方法: 复制代码 代码如下: private bool GetCondition(FeedBack fb) { bool boolResult = true; int f_type = Int32.Parse(ddlFType.SelectedValue); int isClose = Int32.Parse(ddlIs

linq to sql 中,如何解决多条件查询问题,答案,用表达式树! (下)_实用技巧

如何从真正意义上做到延迟加载,即一次只从数据库中取我们需要的用到的那部分数据呢.通过研究,有了下面的方法: 首先,我们要新建一个静态类,用于存放多条件组合查询的各种组合,比如or,And这些等等.代码如下: 复制代码 代码如下: using System.Linq.Expressions; public static class PredicateExtensionses { public static Expression<Func<T, bool>> True<T>

Rafy 中的 Linq 查询支持(根据聚合子条件查询聚合父)

为了提高开发者的易用性,Rafy 领域实体框架在很早开始就已经支持使用 Linq 语法来查询实体了.但是只支持了一些简单的.常用的条件查询,支持的力度很有限.特别是遇到对聚合对象的查询时,就不能再使用 Linq,而只能通过构造底层查询树的接口来完成了.由于开发者的聚合查询的需求越来越多,所以本周我们将这部分进行了增强. 接下来,本文将说明 Rafy 框架原来支持的 Linq 语法,以及最新加入的聚合查询支持及用法.   使用 Linq 查询的代码示例 public WarehouseList G

Linq多条件查询

  方法一:         public IEnumerable<M_Student> ReadCollegeAndName(String collnum, String name)         {             return from s in dc.M_Student                    where                       (!String.IsNullOrEmpty(collnum) ? s.CollegeNum.Equals    

Linq学习教程 Linq to Xml读取复杂xml及Linq to js使用

Linq to Xml读取复杂xml(带命名空间) xml的操作方式有多种,但要论使用频繁程度,博主用得最多的还是Linq to xml的方式,觉得它使用起来很方便,就用那么几个方法就能完成简单xml的读写.之前做的一个项目有一个很变态的需求:C#项目调用不知道是什么语言写的一个WebService,然后添加服务引用总是失败,通过代理的方式动态调用也总是报错,最后没办法,通过发送原始的WebRequest请求直接得到对方返回的一个xml文件.注意过webservice的wsdl文件的朋友应该知道

LINQ体验(17)——LINQ to SQL语句之动态查询

高级特性 本文介绍LINQ的高级特性,其包括大家都关心的动态查询的用法 ,另外简单提下ID标识这个知识. 动态查询 有这样一个场景:应用程 序可能会提供一个用户界面,用户可以使用该用户界面指定一个或多个谓词来筛 选数据.这种情况在编译时不知道查询的细节,动态查询将十分有用. 在LINQ中,Lambda表达式是许多标准查询运算符的基础,编译器创建lambda表达 式以捕获基础查询方法(例如 Where.Select.Order By.Take While 以及其 他方法)中定义的计算.表达式目录树

LINQ体验(15)——LINQ to SQL语句之用户定义函数

用户定义函数 我们可以在LINQ to SQL中使用用户定义函数.只要把用户 定义函数拖到O/R设计器中,LINQ to SQL自动使用FunctionAttribute属性和 ParameterAttribute属性(如果需要)将其函数指定为方法.这时,我们只需简 单调用即可. 在这里注意:使用用户定义函数的时候必须满足以下形式 之一,否则会出现InvalidOperationException异常情况. 具有正确映射 属性的方法调用的函数.这里使用FunctionAttribute属性和 P

LINQ体验(8)—LINQ to SQL语句之Union All/Union/Intersect和Top/Bottom和Pag

LINQ体验(8)-LINQ to SQL语句之Union All/Union/Intersect和Top/Bottom和Paging和SqlMethods 我们继续讲解LINQ to SQL语句,这篇我们来讨论Union All/Union/Intersect操作和Top/Bottom操作和Paging操作和SqlMethods操作 . Union All/Union/Intersect操作 适用场景:对两个集合的处理,例如追加.合并.取相同项.相交项等等. Concat(连接) 说明:连接不

net-用个EF框架的泛形类(BaseDal),按条件查询 的方法,排序的lambda表达式不知道写

问题描述 用个EF框架的泛形类(BaseDal),按条件查询 的方法,排序的lambda表达式不知道写 .net的mvc开发中,我用了一个EF框架的泛形类(BaseDal),我在里面写了一个按条件查询 的方法,但是那个排序的lambda表达式我不知道写 public static List<T> GetPageListBy<TKey>(int pageIndex, int pageSize, ref int rowCount, System.Linq.Expressions.Exp