コード例 #1
0
        public string ToFieldName(LambdaExpression field)
        {
            string dataFieldName = null;

            if (field != null)
            {
                MemberExpression body        = field.Body as MemberExpression;
                UnaryExpression  expression2 = field.Body as UnaryExpression;
                if ((body == null) && (expression2 != null))
                {
                    body = expression2.Operand as MemberExpression;
                }
                if (body != null)
                {
                    Type[] genericArguments = field.Type.GetGenericArguments();
                    if ((body.Member.MemberType == MemberTypes.Property) && (body.Expression.NodeType == ExpressionType.Parameter))
                    {
                        PropertyInfo member = body.Member as PropertyInfo;
                        if (member != null)
                        {
                            dataFieldName = DbObjectTools.GetDataFieldName(genericArguments[0], member);
                        }
                    }
                }
            }
            if (string.IsNullOrEmpty(dataFieldName))
            {
                throw new Exception("無法從 Lambda 表達式 {0} 找到其對應的字段名稱。");
            }
            return(dataFieldName);
        }