简体   繁体   English

我应该如何使用收藏夹?

[英]How should i use collection?

I have a list of strings which is populated by a query from database (entity frameworks): 我有一个字符串列表,这些字符串由数据库(实体框架)中的查询填充:

 var accountIds = new List<string>();

Now I want to add two list of strings to my collection, for example, I have these two queries: 现在,我想向集合中添加两个字符串列表,例如,我有以下两个查询:

 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();
                }                 
            }

So with this query accountIds changes which I don't want this to happen. 因此,使用此查询accountIds更改,我不希望发生这种情况。 I want to have both lists in accountIds. 我想在accountIds中同时包含两个列表。 something like this : 像这样的东西:

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

something like a union (I don't want to use union). 像工会(我不想使用工会)之类的东西。 I'm new to the collection list. 我是收藏列表的新手。 many thanks. 非常感谢。

If you want to add multiple items to existing list then .AddRange method will do this for you 如果要将多个项目添加到现有列表,则.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());

Or more simply, first collect query result to variable and then add these result to existing list like, 或者更简单地说,先收集查询结果变量,然后将这些结果添加到现有列表一样,

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);

Further Reading: 进一步阅读:

List.AddRange(IEnumerable) Method List.AddRange(IEnumerable)方法

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM