用嵌套列表连接两个列表

时间:2019-07-19 19:20:08

标签: c# linq plinq

试图找到一种通过LINQ或PLINQ将两个列表与嵌套列表结合在一起的方法。

我有List AList B,并希望将其父级和子级属性与这两者结合。

我尝试了以下

List<data> result = A.Where(o=>foo.Any(x=>x.headerid=o.headerid)) &&
o.details.Any(y=>foo.Any(z=>z.headerid=o.headerid && z.detailid=y.detailid)).ToList();

但不确定这样做是否正确。在此,foo列表将被扫描两次。我想要一个联接查询来解决此问题,无论是lambda还是联接查询。最好加入查询。

class filterclass
{
   public string headerid;
   public string detailid;
}

class data 
{
  public string headerid;
  public string headername;
  public List<Detail> details;
  //...
}

class detail
{
  public string detailid;
  public string detailname;
  //...
}

List<data> A = new List<data>();
List<filterclass> foo = new List<filterclass>();

现在我需要将A和foo与以下字段结合在一起 A.headerid = foo.headeridA.detail.detailid = foo.detailid

嵌套列表是A.detail,但我不确定如何将其加入。不知道在这种情况下FirstOrDefaultAll是否可以工作。也不想循环

感谢您的任何帮助,并在此先致谢。

我需要一个LINQ JOIN查询。

1 个答案:

答案 0 :(得分:0)

您可以使用Concat扩展方法来连接列表:

var combinedList = list1.Concat(list2);

对于您的具体示例:

var combinedList = A.Concat(foo);

它将创建一个IEnumerable<T>实例,该实例将依次枚举 list1 list2 的元素。