2011-12-16 28 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(); 
    } 
}