2013-03-28 58 views
0

能有人幫助,不知道什麼,我摻雜錯:添加到ICollection的類型實體問題的

[HttpPost] 
public ActionResult SaveRecommendedUserDetails(RecommendAFriendViewModel model) 
{ 
    //List<Entities.Group.Group> entityGroups = new List<Entities.Group.Group>(); 

     foreach (var group in model.Groups) 
     { 
      Entities.Group.Group entityGroup = new Entities.Group.Group(); 
      entityGroup.GroupId = group.GroupId; 
      //entityGroups.Add(entityGroup); 
      recommendedUser.Groups.Add(entityGroup); //groups in recommendeduser is already of type ICollection. 
     } 
} 

RecommendAFriendViewModel模型組屬性:

public IEnumerable<DataModels.Group.GroupDataModel> Groups { get; set; } 

RecommendedUser

在我的控制器

實體羣屬性:

public virtual ICollection<Group.Group> Groups { get; set; } 

我得到的兩條紅線:無法從'int'轉換爲'Zinc.Entities.Group.Group'
和:system.Collections.Generic.List.Add的最佳重載方法匹配(Zinc.Entities。 Group.Group)'有一些無效論據

可以有人告訴我我做錯了嗎? 謝謝

回答

0

您從未初始化entityGroups變量。在使用變量之前,您應該確保它已被分配。此外,您的entityGroup的範圍可以移動到foreach循環:

[HttpPost] 
public ActionResult SaveRecommendedUserDetails(RecommendAFriendViewModel model) 
{ 
    var entityGroups = new List<Entities.Group.Group>(); 
    foreach (var group in model.Groups) 
    { 
     if (!recommendedUser.Groups.Any(x => x.GroupId == group.GroupId)) 
     { 
      var entityGroup = new Entities.Group.Group(); 
      entityGroup.GroupId = group.GroupId; 
      entityGroups.Add(entityGroup.GroupId); 
     } 
    } 
    recommendedUser.Groups.Add(entityGroups); 
} 
+0

感謝我移動一行到的foreach,改變了ICollection的列出但仍獲得recommendedUser.Groups.Add(entityGroups)紅線;即使在我移動新的Entities.Group.Group()之後,與其他紅線相同的「錯誤」。進入foreach – 2013-03-28 08:58:08

+0

什麼是'recommendedUser'?我看不到你在任何地方聲明這個變量。 – 2013-03-28 09:56:02

+0

我在之前的代碼中設置了:) – 2013-03-28 11:04:15

0

你沒有實例與foreach循環的每個迭代一個新的Entities.Group.Group對象。你所做的只是覆蓋最後一個entityGroup.GroupId propery集合,然後試圖在集合中添加同一個實體對象,因爲它已經在前一次迭代中。

if聲明中移動您的entityGroup變量聲明應該可以解決您的問題。

if (!recommendedUser.Groups.Any(x => x.GroupId == group.GroupId)) 
{ 
    Entities.Group.Group entityGroup = new Entities.Group.Group(); // here 
    entityGroup.GroupId = group.GroupId; 
    entityGroups.Add(entityGroup); //get red line here 
} 
+0

非常感謝,但我仍然在.add線上的紅線表明最好的重載方法匹配..有一些無效的參數 – 2013-03-28 08:51:42

+0

哦,呵呵,我只是注意到你試圖添加一個GroupId到Group對象的集合。你只是想添加entityGroup對象 - 我更新了我的示例 – Moho 2013-03-28 09:11:37

相關問題