C# 如何通过使用linq to对象筛选2个列表来创建列表

C# 如何通过使用linq to对象筛选2个列表来创建列表,c#,linq,linq-to-objects,C#,Linq,Linq To Objects,我想知道是否有一种方法可以使用Linq to object从过滤其他两个列表中获得一个列表。 我有两个对象A和B的列表,它们通过一个atribute(代码:String)相互关联。B有另一个心房肌,名字:String 我想得到一个满足2个条件的对象列表 -所有A对象都必须将其A代码atribute与B列表中的任何B代码atribute匹配 -B.名称必须为=“yoda” 我试过使用这个代码(还有另一个例子) 但它似乎不起作用,我不知道为什么。 我只是从林克开始 List<A> Fil

我想知道是否有一种方法可以使用Linq to object从过滤其他两个列表中获得一个列表。 我有两个对象A和B的列表,它们通过一个atribute(代码:String)相互关联。B有另一个心房肌,名字:String

我想得到一个满足2个条件的对象列表

-所有A对象都必须将其A代码atribute与B列表中的任何B代码atribute匹配

-B.名称必须为=“yoda”

我试过使用这个代码(还有另一个例子) 但它似乎不起作用,我不知道为什么。 我只是从林克开始

List<A> FilteredAList = (from OneA in ListOfA
                         join  OneB in ListOfB
                         on OneA.Code equals OneB.Code
                         where OneB.Name == "yoda"
                         select  OneA).ToList<A>();
List FilteredAList=(来自ListOfA中的OneA)
在列表B中加入OneB
在OneA上。代码等于OneB。代码
其中OneB.Name==“yoda”
选择OneA.ToList();

提前谢谢

根据您的要求,我认为我们应该使用
任何
方法,因此我们应该编写
方法查询
而不是
表达式查询
。当然,我不知道
表达式查询
中的
Any
的等价物(至少应该是short,就像
方法查询
,否则就不好了)。如果有人知道,请留下一些评论。谢谢你

var FilteredAList = ListOfA.Where(x=>ListOfB.Any(y=>x.Code==y.Code && y.Name=="yoda"))
                           .ToList<A>();
var-FilteredAList=ListOfA.Where(x=>ListOfB.Any(y=>x.code==y.code&&y.Name==“yoda”))
.ToList();

刚刚测试过,结果为0,尽管B的列表中有几个Yoda,B的列表中有几个代码与A代码匹配。你是说我在回答中发布的代码吗?如果是这样,我确信
ListOfB
中具有
.Name=“yoda”
的元素没有与
ListOfA
中的任何元素匹配的
code
。这两个条件都应该考虑。您可以发布
ListOfB
ListOfA
的示例数据,以便我进行测试。