gpt4 book ai didi

C# - 有两个列表的 Linq

转载 作者:太空狗 更新时间:2023-10-29 22:04:24 25 4
gpt4 key购买 nike

我有 2 个类,它们通过 ID 连接在一起:

public class A {
public int AID;
public string Name;
}

public class B {
public int BID;
public int AID;
}

现在我想过滤我的 listB 以获取所有 B,其中 AName 等于参数 name :

List<A> listA = ...;
List<B> listB = ...;

public List<B> Filter(string name) {
var list = listB.Where(**... A.Name == name ...**).ToList();
return list;
}

我不知道如何使用我在上面定义的参数来过滤 listB。也许有人可以帮我解决这个问题。

谢谢!

最佳答案

使用JoinWhere。我更喜欢带有连接的查询语法:

IEnumerable<B> bs = 
from a in listA
join b in listB on a.AID equals b.AID
where a.Name == name
select b;
List<B> list = bs.ToList();

另一种避免重复 B 的方法(如果是一对多关系)是使用查找:

ILookup<int, string> aNameLookup = listA.ToLookup(a => a.AID, a => a.Name);
List<B> list = listB.Where(b => aNameLookup[b.AID].Contains(name)).ToList();

关于C# - 有两个列表的 Linq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50020598/

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