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

时间:2011-12-16 15:55:12

标签: c# visual-studio visual-studio-2010 visual-studio-2008

我有下表:

讯息
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,但在删除该记录时不确定语法...

4 个答案:

答案 0 :(得分: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(),也会删除数据库中的最后一项。

答案 1 :(得分:0)

尝试使用LastOrDefault();而不是max来获取你的linq语句中的最后一条记录...或者在你的查询中对你的主要ID进行降序排序并选择top(1)..

答案 2 :(得分:0)

如果DemoDataDataContext为您提供DeleteAllOnSubmit方法(我现在不在intellisense附近),您可以使用:

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

答案 3 :(得分: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();
  }
}