2011-12-16 5 views
1

나는 다음과 같은 테이블이 있습니다는 ID (PK) INT auto_inc
메시지 VARCHAR (100)그리드보기에서 마지막 항목 삭제 -> Linq에 및 SQL

난에

메시지 싶습니다
테이블에 마지막으로 추가 된 항목, 즉 가장 높은 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 구문에 대한 확실하지;

는 내가 지금까지 다음 한 대신 최대의 당신의 LINQ의 statemtn에서 마지막 레코드를 얻을 ... 또는 쿼리에 기본 ID에이 하강 정렬을하고 상단 (1) ..

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(); 
    } 
}