我应该如何使用收藏夹?

时间:2019-05-05 09:44:22

标签: c# asp.net-mvc list entity-framework icollection

我有一个字符串列表,这些字符串由数据库(实体框架)中的查询填充:

 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 个答案:

答案 0 :(得分:4)

如果您想将多个项目添加到现有列表中,那么.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) Method