gpt4 book ai didi

c# - Linq比较两个对象列表,其中一个对象有多个列表

转载 作者:太空狗 更新时间:2023-10-29 23:59:00 25 4
gpt4 key购买 nike

public class MyObject1
{
public Guid g1;
public Guid g2;
public Guid g3;
}

public class MyObject2
{
public Guid g4;
}


List<MyObject1> list1;
List<MyObject2> list2;

我想要一个 LINQ 查询,它将返回列表 1 中的所有 MyObject1 对象,其中 MyObject1.g2 == MyObject2.g4,其中 MyObject2 对象位于列表 2 中

我已经编写了分许多步骤执行此操作的代码,但我认为我可以一次迭代完成。

类似

var n = list1.Select(p=> p.g2).ToList()

var o = list2.Intersect(n)

但现在我需要再次使用 o 来研究 list1,这很尴尬

最佳答案

听起来你想要一个 join :

var query = from x1 in list1
join x2 in list2 on x1.g2 equals x2.g4
select x1;

或者在扩展方法语法中:

var query = list1.Join(list2, x1 => x1.g2, x2 => x2.g4, (x1, x2) => x1);

请注意,这只会为您提供 list1 中的项目 - 如果您还需要 list2 中的相应项目,那很简单:

var query = from x1 in list1
join x2 in list2 on x1.g2 equals x2.g4
select new { x1, x2 };

关于c# - Linq比较两个对象列表,其中一个对象有多个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15843835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com