我需要帮助编写这个LINQ查询,这是我想要做的 - 我有两个表
Message
===
Name
MessageTypeID -> Foreign Key
Date
MessageType
===
ID **(the foreign key)
Name
My 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);
}
}
}
答案 0 :(得分:0)
您无法修改您在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);
}
}
}