public class BaseInfo<T> where T:class
    {
       
        protected OfficeManageDataContext officeManage;
        public BaseInfo()
        {
            officeManage = new OfficeManageDataContext();
        }        public void Update(System.Linq.Expressions.Expression<Func<T, bool>> whichID, T obj)
        {
            //此处要求不能改变obj的ID,因为数据库中有些表的ID是自动生成的,这个ID不能变的
            //也就是说不能采用如下的方法: 先将原数据取出,再把原数据删除,再插入新数据
        }        /// <summary>
        /// 查找出想要的数据
        /// </summary>
        /// <param name="s">查找条件表达式</param>
        /// <returns>返回一条实体类</returns>
        public List<T> Select(System.Linq.Expressions.Expression<Func<T, bool>> expression)
        {
           return officeManage.GetTable<T>().Where<T>(expression).ToList();
        }        /// <summary>
        /// 向数据库插入一条数据
        /// </summary>
        /// <param name="obj">要插入的数据</param>
        public void Insert(T obj)
        {
            officeManage.GetTable<T>().InsertOnSubmit(obj);            
            officeManage.SubmitChanges();
        }        /// <summary>
        /// 删除符合条件的数据
        /// </summary>
        /// <param name="expression">删除条件</param>
        public void Delete(System.Linq.Expressions.Expression<Func<T, bool>> expression)
        {
            officeManage.GetTable<T>().DeleteAllOnSubmit<T>(Select(expression));
        }        
    }

解决方案 »

  1.   

    DataContext dbContext = new DataContext("");
    dbContext SubmitChanges()
    参考
      

  2.   

      //绑定数据,用于显示
            private void bindgrid()
            {
                linqDataContext test = new linqDataContext();
                //GridView1.DataSource = from p in test.Customer   select p;//和下面的句子作用一样,查询全部记录
                GridView1.DataSource = test.Customer;            //查询包含某个字段的记录
                
                //1、查找包含程的数据   startwith是查某个字段开头的数据
                //var newcoust = from p in test.Customer where p.FirstName.Contains("飞") select p;
                //2、这个是第二种查找方式
               //var newcoust = from p in test.Customer.Where(a=>a.FirstName.Contains("程")) select p;            //3、准确查找 也是比较常用的查找  note:是==而不是=
                //var newcoust = from p in test.Customer where p.FirstName == "程飞" select p;
                //GridView1.DataSource = newcoust;            GridView1.DataBind();
               
            }
            //添加一条记录
            protected void Button1_Click(object sender, EventArgs e)
            {
                linqDataContext linq = new linqDataContext();
                var addlinq = new Customer
                {
                    FirstName=TextBox1.Text,
                    LastName=TextBox2.Text
                };
                linq.Customer.InsertOnSubmit(addlinq);
                linq.SubmitChanges();
                bindgrid();
            }
            //删除一条记录
            protected void Button2_Click(object sender, EventArgs e)
            {
                linqDataContext abc = new linqDataContext();
                var b = abc.Customer.First(c=>c.CustomerID==8);
                abc.Customer.DeleteOnSubmit(b);
                abc.SubmitChanges();
                bindgrid();
            }
            //更改一条记录
            protected void bchange_Click(object sender, EventArgs e)
            {
                linqDataContext abc = new linqDataContext();
                var b = abc.Customer.First(c => c.CustomerID == 1);
                b.FirstName = "chengfei";
                abc.SubmitChanges();
                bindgrid();
            }
            //同时修改多项
            protected void Button3_Click(object sender, EventArgs e)
            {
                linqDataContext abc = new linqDataContext();
                var b = abc.Customer;
                foreach (var ob in b)
                {
                    ob.FirstName = ob.FirstName + "程飞_";
                }
                abc.SubmitChanges();
                bindgrid();
            }
            //删除指定多项,这个比ado.net高级
            protected void Button4_Click(object sender, EventArgs e)
            {
                linqDataContext fei = new linqDataContext();
                var a = from p in fei.Customer.Where(c => c.FirstName.Contains("c")) select p;
                foreach (var ob in a)
                {
                    fei.Customer.DeleteOnSubmit(ob);
                }
                fei.SubmitChanges();
                bindgrid();
            }
    我自己学习时候写的,都是能够执行的
      

  3.   

    我们可以一起讨论linq哦,我最近看过一些orm的东西
      

  4.   

    List<Product> pd = db.Product.Where(p => p.CategoryID >= 1).Select(p => p).ToList();
    pd[0].CategoryID = 2;  //这里修改
    db.SubmitChanges();
      

  5.   

    请问你的意思是不是通过System.Linq.Expressions.Expression<Func<T, bool>> whichID
    找出符合条件的数据,然后删除这些数据,最后把T obj插入.
    是这样吗?
      

  6.   

    如果表的ID是自动生成的 那么用您这种方法 ID会变化的
      

  7.   

    3q~~正在找 update 的方法。。