C# 循环中的条件记录删除

C# 循环中的条件记录删除,c#,linq,entity-framework,C#,Linq,Entity Framework,有人能解释一下如何有条件地从EF结果集中删除对象吗 这是我的密码 var newClubKitOrders = from q in db.NewClubKitOrders where q.NewClubId == ncbId select q; if (newClubKitOrders.Any()) { foreach (NewClubKitOrder order in newClubKitOrders) { if (checkedStatus == true)

有人能解释一下如何有条件地从EF结果集中删除对象吗

这是我的密码

var newClubKitOrders = from q in db.NewClubKitOrders where q.NewClubId == ncbId select q;
if (newClubKitOrders.Any())
{
    foreach (NewClubKitOrder order in newClubKitOrders)
    {
        if (checkedStatus == true)
        {
            order.OrderDate = DateTime.Now;
        }
        else
        {
            //delete the row (order.delete())
        }
    }

   newClubKitOrders.SaveChanges();
}
谢谢使用

像这样:

        else
        {
           newClubKitOrders.DeleteObject(order);
        }

编辑:也是的,使用for循环,我没有注意到你在迭代什么。谢谢Rashmin Javiya

使用

像这样:

        else
        {
           newClubKitOrders.DeleteObject(order);
        }


编辑:也是的,使用for循环,我没有注意到你在迭代什么。谢谢Rashmin Javiya

您不能删除“foreach”循环中的“order”。因此,请尝试“for”循环。

您不能删除“foreach”循环中的“order”。所以试试“for”循环。

试试下面的代码,为了安全起见,我已将列表复制到另一个列表中。临时列表只是遍历,但实际事务发生在原始列表上

var newClubKitOrders = from q in db.NewClubKitOrders where q.NewClubId == ncbId select q;

if (newClubKitOrders.Any())
{
    var TempnewClubKitOrders = newClubKitOrders.ToList();

    for(int i=0; i< TempnewClubKitOrders.Length; i++)
    {
        if (checkedStatus == true)
        {
            newClubKitOrders[i].OrderDate = DateTime.Now;
        }
        else
        {
            db.NewClubKitOrde.DeleteObject(newClubKitOrders[i]);
        }
    }

   db.SaveChanges();
}
var newClubKitOrders=来自db.newClubKitOrders中的q,其中q.NewClubId==ncbId选择q;
if(newclubkitorers.Any())
{
var tempnewclubkitorers=newclubkitorers.ToList();
for(int i=0;i
尝试以下代码,为了安全起见,我已将列表复制到另一个列表中。临时列表只是遍历,但实际事务发生在原始列表上

var newClubKitOrders = from q in db.NewClubKitOrders where q.NewClubId == ncbId select q;

if (newClubKitOrders.Any())
{
    var TempnewClubKitOrders = newClubKitOrders.ToList();

    for(int i=0; i< TempnewClubKitOrders.Length; i++)
    {
        if (checkedStatus == true)
        {
            newClubKitOrders[i].OrderDate = DateTime.Now;
        }
        else
        {
            db.NewClubKitOrde.DeleteObject(newClubKitOrders[i]);
        }
    }

   db.SaveChanges();
}
var newClubKitOrders=来自db.newClubKitOrders中的q,其中q.NewClubId==ncbId选择q;
if(newclubkitorers.Any())
{
var tempnewclubkitorers=newclubkitorers.ToList();
for(int i=0;i
这应该可以:

var newClubKitOrders = from q in db.NewClubKitOrders where q.NewClubId == ncbId select q;

if (newClubKitOrders.Any())
{
    foreach (NewClubKitOrder order in newClubKitOrders)
    {
        if (checkedStatus == true)
        {
            order.OrderDate = DateTime.Now;
        }
        else
        {
            db.NewClubKitOrders.Remove(order);
        }
    }

    db.SaveChanges();
}
这应该起作用:

var newClubKitOrders = from q in db.NewClubKitOrders where q.NewClubId == ncbId select q;

if (newClubKitOrders.Any())
{
    foreach (NewClubKitOrder order in newClubKitOrders)
    {
        if (checkedStatus == true)
        {
            order.OrderDate = DateTime.Now;
        }
        else
        {
            db.NewClubKitOrders.Remove(order);
        }
    }

    db.SaveChanges();
}

有什么问题吗?删除方法,循环?有什么问题?delete方法,循环?这似乎不会在VS中的foreach()内引起任何警告,但不确定它是否确实删除了:var success=newClubKitOrders.Remove(order)@Slinky它会编译,但当您运行它时,它会抱怨枚举已更改。这似乎不会在VS中的foreach()内引起任何警告,但不确定它是否确实删除了:var success=newclubkitorers.Remove(order)@Slinky它将编译,但当您运行它时,它会抱怨枚举已更改。错误:“无法将索引应用于linq表达式…”我想由于某种原因我无法使用数组索引器-由于它已转换为列表,因此看起来很奇怪错误:“无法将索引应用于linq表达式…”我想我不能使用数组索引器是因为某些原因-似乎很奇怪,因为它被转换成了一个列表