【发布时间】:2019-11-28 19:22:21
【问题描述】:
试图找到一种通过 LINQ 或 PLINQ 将两个列表以及嵌套列表连接起来的方法。
我有 List A、List 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.headerid 和 A.detail.detailid = foo.detailid。
A.detail 是嵌套列表,我不知道如何加入它。不确定FirstOrDefault 或All 在这种情况下是否有效。也不想循环
任何帮助表示赞赏并提前致谢。
我需要一个 LINQ JOIN 查询。
【问题讨论】:
-
请把它变成minimal reproducible example。此外,使用一致的名称。您当前使用的名称非常混乱。什么是
A、B、foo?此外,了解数据的来源也很重要。如果它们来自 SQL 后端并由例如实体框架查询,则可能会有很大的不同。你可以edit你的问题。 -
您好格特,感谢您的回复。它不是来自 SQL 的东西。它是一个 .net 对象。 A 也是我上面提到的一个列表,就像 foo 一样。我只需要按照我的上述要求加入这两个列表。