LinqHelper拓展

摘要:
publicstaticassLinqHelper{//NHibernate.Hql.Ast.HqlBooleanExpressionpublicstaticExpression<Func<T,bool>>True<T>(){returnf=>True;}publicstaticExpression<Func<T,bool>>False<T>(){returnf=>False;}公众
public static class LinqHelper
    {
        //NHibernate.Hql.Ast.HqlBooleanExpression
        public static Expression<Func<T, bool>> True<T>()
        {
            return f => true;
        }

        public static Expression<Func<T, bool>> False<T>()
        {
            return f => false;
        }

        public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> expr1,
            Expression<Func<T, bool>> expr2)
        {
            InvocationExpression invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());
            return Expression.Lambda<Func<T, bool>>
                (Expression.AndAlso(expr1.Body, invokedExpr), expr1.Parameters);
        }

        /// <summary>
        ///     排序
        /// </summary>
        /// <typeparam name="TEntity"></typeparam>
        /// <param name="source"></param>
        /// <param name="propertyStr"></param>
        /// <param name="order"></param>
        /// <returns></returns>
        public static IQueryable<TEntity> OrderBy<TEntity>(this IQueryable<TEntity> source, string propertyStr, string order)
            where TEntity : class
        {
            ParameterExpression param = Expression.Parameter(typeof (TEntity));
            PropertyInfo property = typeof (TEntity).GetProperty(propertyStr);
            Expression propertyAccessExpression = Expression.MakeMemberAccess(param, property);
            LambdaExpression le = Expression.Lambda(propertyAccessExpression, param);
            Type type = typeof (TEntity);
            MethodCallExpression resultExp = Expression.Call(typeof (Queryable),
                order == "desc" ? "OrderByDescending" : "OrderBy",
                new[] {type, property.PropertyType}, source.Expression, Expression.Quote(le));
            return source.Provider.CreateQuery<TEntity>(resultExp);
        } 

    }

  

调用:
 var member = LinqHelper.True<Memberuser>();  //申请表达式
 

最后加入 where 条件语句
 var query = db.Members.Where(member).ToList();  //加入表达式

  

免责声明:文章转载自《LinqHelper拓展》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇博客园—2D小人物让超链接点击后不跳转,可以用href = "https://tool.4xseo.com/article/267833.html",但是这个#就会锚点到页面最上边 点击链接后不跳转可以设置成下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

js中的数据类型,以及如何检测数据类型

基本数据类型:string,number,boolean,null,undefined,symbol 引用数据类型:object(array,function...) 常用的检测数据类型的方法一般有以下三种: 1.typeof 一般主要用来检测基本数据类型,因为它检测引用数据类型返回的都是object 还需要注意的一点是:typeof检测null返回的也是...

使用事务和SqlBulkCopy批量插入数据

SqlBulkCopy是.NET Framework 2.0新增的类,位于命名空间System.Data.SqlClient下,主要提供把其他数据源的数据有效批量的加载到SQL Server表中的功能。类似与 Microsoft SQL Server 包中名为 bcp 的命令行应用程序。但是使用 SqlBulkCopy 类可以编写托管代码解决方案,性能上优...

JavaScript 值删除对象(Object)的属性——delete

原网址:https://blog.csdn.net/weixin_43553701/article/details/90757945 删除对象属性的方法 JS中如何删除对象中的某一属性 1 var obj={ 2 name: 'zhagnsan', 3 age: 19 4 } 5 delete obj.name //true 6 type...

XNA游戏开发之(六)——保存游戏数据

[原创]Alex 游戏过程中,通常需要存储游戏状态。在下次启动游戏时,重新载入游戏,继续游戏。 实现过程非常简单,首先建立一个结构体定义需要保存的游戏参数,然后通过XmlSerializer类将其保存为一个XML文档。 1interfaceGameData2{3intGameID;4stringPlayName;5DateTimeTime;6} XNA...

转:将字符串或表达式直接转为C#可执行代码的办法

原文地址:http://blog.csdn.net/qwlovedzm/article/details/6292147 近日有个项目有不少的计算公式,而且要求能定制,如何能将字符串或表达式直接转为C#的可执行代码就好了。 经过从网上查阅资料,发现有一个开源的工具类,将它修改后改为如下效果: [c-sharp]view plaincopyprint?...

C# 序列化与反序列化之DataContract与xml对子类进行序列化的解决方案

C# 序列化与反序列化之DataContract与xml对子类进行序列化的解决方案 1、DataContract继承对子类进行序列化的解决方案 第一种是在 [DataContract, KnownType(typeof(继承的子类))]添加 KnownType(typeof(继承的子类))即可,第二种是在序列化的时候,添加类型 DataContractSe...