从网格视图中删除最后一项- >Linq,SQL

本文关键字:一项 Linq SQL 视图 网格 删除 最后 | 更新日期: 2023-09-27 18:17:59

我有以下表格:


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,但不确定的语法,当涉及到删除该记录…

从网格视图中删除最后一项- >Linq,SQL

示例:

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(),并将从数据库中删除最后一项。

尝试使用LastOrDefault();而不是Max在你的linq语句中得到最后的记录…或者在你的查询做一个下降排序对你的主id和选择top(1)..

如果DemoDataDataContext为您提供了DeleteAllOnSubmit方法(我现在不接近智能感知),您可以使用:

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

将上下文括起来。使用"删除"。叫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();
  }
}