2013-03-28 3 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

спасибо я переместил одну строку в Еогеасп и изменил ICollection в список, но все-таки получить красную линию на recommendedUser.Groups.Add (entityGroups); с той же «ошибкой», что и другая красная линия, даже после того, как я переместил новые Entities.Group.Group(); в foreach –

+0

Что такое 'RecommendedUser'? Я не вижу, чтобы вы указали эту переменную где угодно. –

+0

Я установил это ранее в своем коде :) –

0

Вы не инстанцирование нового Entities.Group.Group объекта с каждой итерацией вашего foreach цикла. Все, что вы делаете, перезаписывает последний набор свойств entityGroup.GroupId, а затем пытается добавить тот же объект сущности в коллекцию, когда он уже находится на предыдущей итерации.

Перемещение декларации переменной entityGroup внутри оператора if должно решить проблему.

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, в которой указан лучший метод перегрузки. Есть некоторые недопустимые аргументы –

+0

oh, duh, я просто заметил, что вы пытаетесь добавить GroupId в коллекцию объектов Group , вы просто хотите добавить объект entityGroup - я обновил свой пример – Moho

Смежные вопросы