小编典典

使用Linq to SQL删除表中的行

sql

我有一个体育数据库,其中的表groupmembers具有字段ID,groupID和memberID。我从一个名为txtRemoveGroupMember的文本框中获取memberID,并从一个复选框列表中获取groupID。现在,我要删除同时具有groupID和memberID的行。我已经试过这段代码:

foreach(ListItem listItem in cblRemoveMemberFromGroup.Items)
{
       int memberid = Convert.ToInt32(txtRemoveGroupMember.Text);
       int groupid = Convert.ToInt32(listItem.Value);

       var removeFromGroup = from gm in dataContext.GroupMembers
            where (gm.memberID == memberid) && (gm.groupID == groupid)
            select gm;

       dataContext.GroupMembers.DeleteOnSubmit(removeFromGroup);
       dataContext.SubmitChanges();
}

但是我得到这个错误:

错误7参数1:无法从’System.Linq.IQueryable
‘转换为’GSI_side.GroupMember’

而这个错误:

错误6最佳重载方法匹配为’System.Data.Linq.Table
.DeleteOnSubmit(GSI_side.GroupMember)’有一些无效的参数

希望有人可以帮助我解决这个问题!


阅读 185

收藏
2021-04-22

共1个答案

小编典典

您必须致电.ToList()

var items = removeFromGroup.ToList();
foreach (var item in items)
  dataContext.GroupMembers.DeleteOnSubmit(item);

对于批量删除,我使用this,因为LINQ to SQL首先加载将要删除的整个数据,然后逐个删除每个数据。

https://terryaney.wordpress.com/2008/04/14/batch-updates-and-deletes-with-
linq-to-sql/

https://github.com/longday/LINQ-to-SQL-Batch-Updates-
Deletes

2021-04-22