Skip to main content
 首页 » 编程设计

c#之我应该如何使用集合

2024年02月04日27webabcd

我有一个字符串列表,由来自数据库( Entity Framework )的查询填充:

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

类似于联合的东西(我不想使用联合)。我是收藏列表的新手。非常感谢。

请您参考如下方法:

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