排名
                
                
                    6
                
            
                    文章
                
                
                    6
                
            
                    粉丝
                
                
                    16
                
            
                    评论
                
                
                    8
                
            
            {{item.articleTitle}}
            
    {{item.blogName}} : {{item.content}}
        
            ICP备案  :渝ICP备18016597号-1
        
        
            网站信息:2018-2025TNBLOG.NET
        
        
            技术交流:群号656732739
        
        
            联系我们:contact@tnblog.net
        
        
            公网安备: 50010702506256
50010702506256
        
     50010702506256
50010702506256
         
        
            欢迎加群交流技术
        
     分类:
    NET
    
    分类:
    NET
实现任意对象的查询
public static List<T> ToList<T>()
{
    string tableName = typeof(T).Name;
    string sql = "select * from " + tableName;
    using (SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=123456;database=mydb"))
    {
        conn.Open();
        using (SqlCommand com = new SqlCommand(sql, conn))
        {
            SqlDataReader reader = com.ExecuteReader();
            List<T> departments = new List<T>();
            while (reader.Read())
            {
                //一个类型通过反射实例化
                T obj = Activator.CreateInstance<T>();
                //遍历类型所有的公开属性
                foreach (var item in obj.GetType().GetProperties())
                {
                    string pname = item.Name;
                    //取出来对应属性名查询的value
                    Object value = reader[pname];
                    if (value != DBNull.Value)
                    {
                        //反射赋值
                        item.SetValue(obj, value);
                    }
                }
                departments.Add(obj);
            }
            return departments;
        }
    }
}表达式数实现一个简单得条件
表达式数的简单分析

代码:
public static List<T> ToList<T>(Expression<Func<T, bool>> predicate)
    {
        string tableName = typeof(T).Name;
        string sql = "select * from " + tableName + " where ";
        BinaryExpression binaryExpression = predicate.Body as BinaryExpression;
        //解析左边(提起名字)
        MemberExpression memberExpression = binaryExpression.Left as MemberExpression;
        string name = memberExpression.Member.Name;
        sql += " " + name;
        if (binaryExpression.NodeType == ExpressionType.Equal)
        {
            sql += " = ";
        }
        //解析右边(属性值)
        string rightvalue = binaryExpression.Right.ToString().Replace("\"", "");
        sql += "'" + rightvalue + "'";
        using (SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=123456;database=mydb"))
        {
            conn.Open();
            using (SqlCommand com = new SqlCommand(sql, conn))
            {
                SqlDataReader reader = com.ExecuteReader();
                List<T> departments = new List<T>();
                while (reader.Read())
                {
                    //一个类型通过反射实例化
                    T obj = Activator.CreateInstance<T>();
                    //遍历类型所有的公开属性
                    foreach (var item in obj.GetType().GetProperties())
                    {
                        string pname = item.Name;
                        //取出来对应属性名查询的value
                        Object value = reader[pname];
                        if (value != DBNull.Value)
                        {
                            //反射赋值
                            item.SetValue(obj, value);
                        }
                    }
                    departments.Add(obj);
                }
                return departments;
            }
        }
    }使用:
List<Department> departments = MyEFContext.ToList<Department>(a => a.DepartmentName == "洗澡服务");
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)
评价
     
         
         
        