表达式树 (rec) => new ParadigmSearchListData { Number = rec.NUMBER, Name = rec.RES_NAME };

来源:互联网 发布:淘宝妞妞药妆店 编辑:程序博客网 时间:2024/06/06 00:54


        //selector (rec) => new ParadigmSearchListData { Number = rec.NUMBER, Name = rec.RES_NAME };

//参数为 源数据(TSource)的字段

        Expression<Func<TSource, TResult>> CreateSelecter<TSource, TResult>(string colNumber, string colName)
        {
            Expression<Func<TSource, TResult>> selector = null;

            //(rec)
            ParameterExpression param = Expression.Parameter(typeof(TSource), "rec");
            //new ParadigmSearchListData
            var v0 = Expression.New(typeof(TResult));
            //Number
            var v1 = typeof(TResult).GetProperty("Number");
            //rec.NUMBER
            var v2 = Expression.Property(param, typeof(TSource).GetProperty(colNumber));
            //Name
            var v3 = typeof(TResult).GetProperty("Name");
            //rec.RES_NAME
            var v4 = Expression.Property(param, typeof(TSource).GetProperty(colName));

            Expression body = Expression.MemberInit(v0,
                //{ Number = rec.NUMBER, Name = rec.RES_NAME }
                new MemberBinding[]
                {
                    //Number = rec.NUMBER
                    Expression.Bind(v1, v2),
                    //Name = rec.RES_NAME
                    Expression.Bind(v3, v4)
                });

            selector = (Expression<Func<TSource, TResult>>)Expression.Lambda(body, param);

            return selector;

        }


数据
    public partial class T_MATERIAL_APPARATUS : EntityObject

{


        public global::System.String RES_NAME
        {
            get
            {
                return _RES_NAME;
            }
            set
            {
                OnRES_NAMEChanging(value);
                ReportPropertyChanging("RES_NAME");
                _RES_NAME = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("RES_NAME");
                OnRES_NAMEChanged();
            }
        }

}

    //范例检索 显示检索到的数据的结构
    public class ParadigmSearchListData
    {
        #region 变量

        //icon")]
        Image _icon;

        //编号")]
        string _number;

        //名称")]
        string _name;

        //金额")]
        decimal? _money;

        #endregion

        #region 属性

        [DisplayName("icon")]
        public Image Icon
        {
            get
            {
                return _icon;
            }
            set
            {
                _icon = value;
            }
        }

        [DisplayName("编号")]
        public string Number
        {
            get
            {
                return _number;
            }
            set
            {
                _number = value;
            }
        }

        [DisplayName("名称")]
        public string Name
        {
            get
            {
                return _name;
            }
            set
            {
                _name = value;
            }
        }

        [DisplayName("金额")]
        public decimal? Money
        {
            get
            {
                return _money;
            }
            set
            {
                _money = value;
            }
        }

        #endregion

        #region 构造函数

        public ParadigmSearchListData()
        {
        }

        public ParadigmSearchListData(Image icon, string number, string name, decimal? money)
        {
            _icon = icon;

            //编号")]
            _number = number;

            //名称")]
            _name = name;

            //金额")]
            _money = money;
        }

        #endregion

    }

调用
                Expression<Func<T_MATERIAL_APPARATUS, ParadigmSearchListData>> selector =
                    CreateSelecter<T_MATERIAL_APPARATUS, ParadigmSearchListData>("NUMBER", "RES_NAME");