2017-03-14 6 views
0

Datagridで選択した行のデータベースから行を削除したい 既にデータグリッドで行を選択する方法がありますが、button_clickで削除すると削除されます私のDataGrid内ではなく、私の実際のデータベースデータベースからの行の削除C#WPF Linq

をして私は私の行を削除するには、次のコードを使用しています:

私のデータベース・プロパティが新しい場合はコピーに設定されていると私はすでにに設定しようとした
private void btnDeleteUser_Click(object sender, RoutedEventArgs e) 
    { 
     DialogResult dr = System.Windows.Forms.MessageBox.Show("Do You Want to Delete this User?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); 

     if (dr == DialogResult.Yes) 
     { 
      var query = 
       from t in db.tbl_Users 
       where t.Name == name 
       select t; 

      foreach (var t in query) 
      { 
       db.tbl_Users.DeleteOnSubmit(t); 
      } 

      db.SubmitChanges(); 

      var refresh = 
         (from q in db.tbl_Users 
         select new { Name = q.Name, Rights = q.Rights, Operatortag = q.Operatortag, Active = q.Active, Cardcode = q.CardCode }).ToList(); 

      dgUsers.ItemsSource = refresh; 
     } 
    } 

常にコピーしますが、どちらも助けにならないでしょう。

誰かが私の問題の答えを知っていますか?

+0

は '新しい場合はコピー' を使用して、実行をしてみてくださいすることができますアプリケーション自体にデバッガ/ビジュアルスタジオがありません。 –

+0

それは動作しません@LeiYang –

+0

コードをステップスルーしてデバッグする場合、「クエリ」に値がありますか、それともnullですか? – chillfire

答えて

1

は、あなたはそれが

var items = query.ToList(); 

foreach (var item in items) 
{ 
    db.tbl_Users.DeleteOnSubmit(item); 
} 

を助けることを願っ.ToList()を呼び出す必要があります。また、正しい選択をするのDataContext

List<GroupMember> removeFromGroup = (from gm in dataContext.GroupMembers 
           where (gm.memberID == memberid)) 
           select gm).ToList(); 

dataContext.GroupMembers.DeleteAllOnSubmit(removeFromGroup); 
dataContext.SubmitChanges(); 
+0

foreachはすでにアイテムを取り出した –

+0

申し訳ありませんが、そのdidnt仕事どちらでも –

+0

あなたがこれを試してみてください、最初にクエリがいくつかの値を返すかどうかをチェックすることができますかvar items = query.ToList(); db.tbl_Users.DeleteAllOnSubmit(items); db.SubmitChanges(); – AKN