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

intersection of two list add to another list in mvc

我有以下列表

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 LIST 而 approverusers 是一个 AspNetRole LIST ,我怎样才能将这两个列表合并或添加到一个列表中?

尝试

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

Concat returns 两个列表放在一起的 IEnumerable<T>,它不会修改任何现有列表。此外,由于它 returns 是一个 IEnumerable,如果您想将它分配给一个 List<T>, 的变量,您必须在返回的 IEnumerable<T> 上调用 ToList()

或者你可以试试

approverprofiles.AddRange(approverusers)
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);

您可以将其序列化为一个 class 作为-

而不是合并或添加
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()
}

编辑

只要将对象添加到现有 class 就很简单

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
}

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

approverprofiles.AddRange(approverusers);