2013-02-17 88 views
1

後,我需要幫助寫這個LINQ查詢,這裏是我想做的事 - 我有兩個表刪除數據查詢

Message 
=== 
Name 
MessageTypeID -> Foreign Key 
Date 

MessageType 
=== 
ID **(the foreign key) 
Name 

我獲取API的方法返回具有以下結構的JSON對象:

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

問題:我希望過濾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

「......導致異常」。什麼例外? – abatishchev 2013-02-17 03:39:59

+0

我正在使用實體框架5. – GMan 2013-02-17 10:16:34

回答

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); 
     } 
    } 
} 
+0

感謝堆!這對我有效:) – GMan 2013-02-17 12:42:28