我有下表:
讯息
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,但在删除该记录时不确定语法...
答案 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();
}
}