代码之家  ›  专栏  ›  技术社区  ›  kez Sirwan Afifi

两个列表的交集添加到mvc中的另一个列表

  •  1
  • kez Sirwan Afifi  · 技术社区  · 10 年前

    我有以下列表

    List<AspNetUser> approverprofiles = db.AspNetUsers.Where(w => w.Subsidary_ID =="04").ToList();
    
    List<AspNetRole> approverusers = db.AspNetRoles.Where(w => w.Name == "Approver").ToList();
    

    approverprofiles 是一个 AspNetUser 列表和 approverusers 是一个 AspNetRole LIST,如何将这两个列表合并或添加到一个列表中?

    4 回复  |  直到 10 年前
        1
  •  1
  •   Manoz    10 年前

    您可以将其序列化为一个类,而不是合并或添加-

    Public Class MergeClass {
    
      public List<AspNetUser> AspNetUsers {get;set;}
      public List<AspNetRole> AspNetRoles {get;set;}
    
    }
    

    现在-

    var mergeList= new MergeClass {
      AspNetUsers= approverprofiles.ToList(),
      AspNetRoles=  approverusers.ToList()
    }
    

    编辑

    就向现有类添加对象而言,很简单

    Public Class MergeClass {
    
      public List<AspNetUser> AspNetUsers {get;set;}
      public List<AspNetRole> AspNetRoles {get;set;}
      public string MyObject {get;set;}
    }
    

    然后你可以使用它-

      var mergeList= new MergeClass {
          AspNetUsers= approverprofiles.ToList(),
          AspNetRoles=  approverusers.ToList(),
          MyObject= "someString"
      }
    

    访问属性-

    var aspNetUsersFromMergedList = MergeClass.AspNetUsers.Select(a=>a.Id))
    

    根据循环的问题,您可以访问这样的属性-

    foreach(var approvermail in MergeClass.AspNetUsers.ToList(){
       //do something
    }
    
        2
  •  0
  •   Tushar Gupta    10 年前

    尝试

    approverprofiles = approverprofiles .Concat(approverusers ).ToList();
    

    Concat 返回一个 IEnumerable<T> 即两个列表放在一起,它不会修改任何现有列表。此外,由于它返回一个IEnumerable,如果您想将它分配给一个变量 List<T>, 你得打电话 ToList() 上 IEnumerable<T> 返回。

    或者你可以试试

    approverprofiles.AddRange(approverusers)
    
        3
  •  0
  •   Kutty Rajesh Valangai    10 年前
    List<AspNetUser> approverprofiles = db.AspNetUsers.Where(w => w.Subsidary_ID =="04").ToList();
    
    List<AspNetRole> approverusers = db.AspNetRoles.Where(w => w.Name == "Approver").ToList();
    
    approverprofiles.AddRange(approverusers);
    
        4
  •  0
  •   Namdev Karande    10 年前

    使用下面的内置函数将第二个列表添加到第一个列表。

    approverprofiles.AddRange(approverusers);