正在删除查询后的数据

本文关键字:数据 查询 删除 | 更新日期: 2023-09-27 17:59:47

我需要帮助编写这个LINQ查询,这是我想做的-我有两个表

Message
===
Name
MessageTypeID  -> Foreign Key
Date
MessageType
===
ID **(the foreign key)
Name

我的Get API方法返回具有以下结构的JSON对象:

- List<MessageType>
- Name
- List<Message> 

问题:我希望过滤messagetype对象中的邮件列表,使其仅包括日期小于今天的邮件。

我的第一个解决方案是执行以下操作,但这只是多次返回第一个messagetype对象。

var mt = from m in db.MessageType
         join l in db.Message on m.MessageTypeID equals l.MessageTypeID
         where m.SenderID == id && l.Date < DateTime.Now
         select m;
return mt.AsEnumerable();

然后,我尝试删除联接并在查询后删除数据,但这导致了异常。

var myList = mt.ToList();
foreach (var mtype in myList)
{
    foreach (var mess in mtype.LibMessages)
    {
        if (mess.VisibleEndDate < DateTime.Now)
        {
            // remove expired message. 
            mtype.LibMessages.Remove(mess);
        }
    }
}

正在删除查询后的数据

您不能在ForEach中修改正在迭代的集合请修改内部循环如下:

var myList = mt.ToList();
foreach (var mtype in myList)
{
    foreach (var mess in mtype.LibMessages.ToList())
    {
        if (mess.VisibleEndDate < DateTime.Now)
        {
            // remove expired message. 
            mtype.LibMessages.Remove(mess);
        }
    }
}