linq在EF框架下,动态字段与值查询的方法

// <summary>

        /// 根据不同的字段和值查找是否存在该信息
        /// </summary>
        /// <param name="field">数据表的字段</param>
        /// <param name="value">字段的值</param>
        /// <returns></returns>
        public bool ApplyIsExit(string field, string value)
        {
            try
            {
                using (ChannelDBEntities entities = new ChannelDBEntities())
                {
                    //创建一个来源于那个EF表的参数,并命表格的名字
                    var parameter = Expression.Parameter(typeof(ChannelApplyInfo), "ChannelApplyInfo");
                    //通过上述的参访问变量值对应的字段
                    MemberExpression memberDynamic = Expression.PropertyOrField(parameter, field);
                    //把值转为常量表达式
                    ConstantExpression constantDynamic = Expression.Constant(value);
                    //生成一段二元表达式
                    var query = Expression.Equal(memberDynamic, constantDynamic);
                    //通过上述的参访问变量值对应的字段
                    MemberExpression memberIsDel = Expression.PropertyOrField(parameter, "IsDel");
                    //通过上述的参访问变量值对应的字段
                    ConstantExpression constantIsDel = Expression.Constant(false);
                    //在二元表达式上并列加载一段二元表达式
                    query = Expression.And(query, Expression.Equal(memberIsDel, constantIsDel));
                    //生成lambda表达式
                    var lambda = Expression.Lambda<Func<ChannelApplyInfo, Boolean>>(query, parameter);
                    //查找
                    var newChannel = entities.ChannelApplyInfo.FirstOrDefault(lambda.Compile());
                    return newChannel != null;
                }
 
            }
            catch (Exception ex)
            {
                Log4netHelper.Error(ex.Message, ex);
                return false;
            }           
        }

 

转载于:https://www.cnblogs.com/chonga/p/7488315.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值