2011-12-16 12 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を見つけることができますが、そのレコードを削除することになる...

答えて

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を使用してみてくださいwhenit構文のかわからない。:

は、私がこれまでに以下のき代わりに、最大の(1)あなたのプライマリIDの下降の並べ替えを行うと、トップを選択し、あなたのLINQのstatemtn中...またはあなたのクエリで最後のレコードを取得する。..

0

DemoDataDataContextは(私は今近くにインテリセンスはないよ)あなたDeleteAllOnSubmit方法を与えた場合、あなたが使用できます。

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

申し訳ありませんが、あなたの前提条件を取り消すことはできません。 Btw、それは動作しません。 – user559142

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(); 
    } 
} 
関連する問題