从数据库C#WPF Linq删除行

时间:2017-03-14 08:08:55

标签: c# wpf linq linq-to-sql

我想从Datagrid中选定行的数据库中删除一行 我已经知道如何在我的Datagrid中选择一行,但是当我在button_click上删除它时,它只在我的Datagrid中删除它而不是在我的实际数据库中删除它

我使用以下代码删除我的行:

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

我的数据库属性设置为复制如果更新,我已经尝试设置为始终复制,但这也不会有帮助。

有人知道我的问题的答案吗?

1 个答案:

答案 0 :(得分:1)

你必须调用.ToList()希望它能帮助

var items = query.ToList();

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

或者您可以使用 DataContext

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

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