2014-02-10 2 views
0

Как я могу добавить один элемент в коллекцию внутри, если выбрать запрос linq?Добавить элемент в ICollection внутри запроса Linq

IEnumerable<User> users 
    = model.Select(u => new User 
     { 
      Username = u.Username, 
      EmailAddress = u.EmailAddress, 
      Federations = u.FederatedUsername != null ? new List<Federation>().Add(new Federation { FederatedUsername = u.FederatedUsername }) : null, 
     }); 

Однако, я получаю ошибку void и нулевые типы несовместимы.

У меня есть два объекта с (соответствующие) свойства показано ниже:

User 
----- 
UserID [PK] 
Username 
EmailAddress 
... 

Federation 
---------- 
FederationID [PK] 
UserID [FK] 
FederatedUsername 

Однако я получаю сообщение об ошибке недействителен типы несовместимы.

ответ

1

попробовать что-то вроде этого:

IEnumerable<User> users = 
    model 
     .Select(u => new User 
     { 
       Username = u.Username, 
       EmailAddress = u.EmailAddress, 
       Federations = 
        u.FederatedUsername == null 
        ? new List<Federation>() : 
        (new [] 
         { 
          new Federation() 
          { 
           FederatedUsername = u.FederatedUsername 
          }, 
         }).ToList(), 
     }); 
+0

БУМ! Да, идеально! – RichC

+0

'(new [] {new Federation() {FederatedUsername = u.FederatedUsername},}) .ToList()'? Почему бы не просто «новый список () {new Federation {(..)}}'? – MarcinJuraszek

+0

@MarcinJuraszek - Да, это тоже хорошо. Я просто стараюсь использовать инициализатор массива в качестве основного способа создания перечислимого. – Enigmativity

2
new List<Federation>().Add(new Federation { FederatedUsername = u.FederatedUsername }) 

этот кусок кода не возвращает список, потому что Add не возвращает ничего.

Использование коллекции инициализации синтаксиса вместо:

new List<Federation>() { new Federation { FederatedUsername = u.FederatedUsername } } 

так и должно быть:

Federations = u.FederatedUsername != null 
        ? new List<Federation>() { 
         new Federation { 
          FederatedUsername = u.FederatedUsername 
         } 
        } 
        : null, 
Смежные вопросы