2011-12-16 36 views
1

我有以下表格:删除最后产品从网格视图 - >的LINQ和SQL

消息
ID(PK)INT auto_inc
消息VARCHAR(100)

我想删除表中最后添加的项目,即ID最高的项目?

我见到目前为止以下内容:

 protected void Button1_Click(object sender, EventArgs e) 
     { 
      DemoDataDataContext db = new DemoDataDataContext(); 

      //locate the record with the highest ID 
      var deleteQuery = 
       (from d in db.Messages 
       select d).Max(); 

      //remove it from the database 

     } 

我能找到的最高的ID,但不知道在语法whenit来删除该记录......

回答

1

例子:

protected void Button1_Click(object sender, EventArgs e) 
     { 
      DemoDataDataContext db = new DemoDataDataContext(); 

      //locate the record with the highest ID 
      var deleteQuery = 
       (from d in db.Messages 
       order by d.ID 
       select d).LastOrDefault(); 

      //remove it from the database 
      db.Messages.DeleteOnSubmit(deleteQuery); 
      db.SubmitChanges(); 
     } 

此使用LastOrDefault()并且还将删除数据库中的最后一项。

0

尝试使用LastOrDefault();而不是最大拿到最后一个记录在您的LINQ statemtn ......或者您的查询做你的主ID的降序排序,然后选择顶(1)..

0

如果DemoDataDataContext给你DeleteAllOnSubmit方法(我不靠近​​智能感知现在),你可以使用:

db.Messages.DeleteOnSubmit(deleteQuery).submitChanges(); 
+0

对不起,但你不应该回答,如果你不能支持你的假设。顺便说一句,它不起作用。 – user559142 2011-12-16 16:19:11

0

附上您的上下文中使用。使用'删除'。调用SaveChanges。

public void DeleteLastMessage() 
{ 
    using (var db = new DemoDataDataContext()) 
    { 
    var lastMessage = (from m in db.Messages 
        orderby m.ID 
        select m) 
       .LastOrDefault(); 

    db.Messages.Remove(lastMessage); 
    db.SaveChanges(); 
    } 
}