Как я должен использовать коллекцию? - PullRequest
1 голос
/ 05 мая 2019

У меня есть список строк, который заполняется запросом из базы данных (структуры сущностей):

 var accountIds = new List<string>();

Теперь я хочу добавить два списка строк в мою коллекцию, например, у меня есть два запроса:

 using (var myketDB = new MyketReadOnlyDb())
            {
                if (!string.IsNullOrWhiteSpace(name))
                {
                    accountIds = myketDB.AppDevelopers
                        .Where(n => n.RealName.Contains(name))
                        .Select(e => e.Email).ToList();                  
                }                
                if (!string.IsNullOrWhiteSpace(email))
                {
                    accountIds = myketDB.Accounts
                      .Where(e => e.Mail.Contains(email))
                      .Select(e => e.Email).ToList();
                }                 
            }

Так что с этим запросом accountIds изменения, которые я не хочу, чтобы это произошло. Я хочу иметь оба списка в accountIds. как то так:

accountIds.add(//first query);
accountIds.add(//2nd query);

что-то вроде союза (я не хочу использовать союз). Я новичок в списке коллекции. большое спасибо.

1 Ответ

4 голосов
/ 05 мая 2019

Если вы хотите добавить несколько элементов в существующий список, метод .AddRange сделает это для вас

accountIds.AddRange(myketDB.AppDevelopers
                        .Where(n => n.RealName.Contains(name))
                        .Select(e => e.Email).ToList());

accountIds.AddRange(myketDB.Accounts
                      .Where(e => e.Mail.Contains(email))
                      .Select(e => e.Email).ToList());

или проще, сначала соберите результат запроса в переменную, а затемдобавить эти результаты в существующий список, например,

var appDevEmails = myketDB.AppDevelopers
                            .Where(n => n.RealName.Contains(name))
                            .Select(e => e.Email).ToList();

var accountsEmails = myketDB.Accounts
                          .Where(e => e.Mail.Contains(email))
                          .Select(e => e.Email).ToList();

accountIds.AddRange(appDevEmails);

accountIds.AddRange(accountsEmails);

Дополнительная литература:

Метод List.AddRange (IEnumerable)

...