【问题标题】:How should i use collection?我应该如何使用收藏?
【发布时间】:2019-05-05 09:44:22
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 很高兴听到。请在答案左侧打勾以使其变为绿色:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    • 2015-06-27
    • 2013-09-04
    相关资源
    最近更新 更多