根据实体动态创建select Lamdad表达式

该博客介绍如何根据实体上的DisplayName特性动态创建Select Lambda表达式。通过获取具有DisplayName特性的字段,利用Expression API构建MemberInitExpression,从而实现仅选择带有该特性的字段,避免全字段查询。适用于监控实体字段变化的场景。
摘要由CSDN通过智能技术生成

        /// <summary>

        /// 动态创建Selects

        /// </summary>

        /// <typeparam name="TSource"></typeparam>

        /// <typeparam name="TResult"></typeparam>

        /// <returns></returns>

        public static Expression<Func<TSource, TResult>> CreateMemberInitExpression<TSource, TResult>()

        {

             //获取所有 DisplayName 特性的字段

            var properties = typeof(TSource).GetProperties().Where(x => x.CustomAttributes.Any(t => t.AttributeType == typeof(DisplayNameAttribute))).ToList();

               Dictionary<string, string> fieldDic=properties.ToDictionary(x => x.Name, y => y.Name);

            Expression<Func<TSource, TResult>> selector = null;

            ParameterExpression left = Expression.Pa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值