如何使用linq到object过滤2个列表来创建列表

时间:2013-08-12 00:13:12

标签: c# linq linq-to-objects

我想知道是否有办法使用Linq来反对从过滤2个其他列表中获取列表。 我有两个对象A和B列表,它们通过一个属性(代码:字符串)相互关联。 B有另一个属性,Name:String。

我想获得满足2个条件的A对象列表。

- 所有A对象必须将其A.Code属性与B列表中的任何B.Code属性相匹配。

-B.Name必须是=“yoda”;

我试过这个代码(和另一个例子) 但它似乎工作,我不知道为什么。 我刚开始使用linQ。

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>();

先谢谢!

1 个答案:

答案 0 :(得分:5)

根据您的要求,我认为我们应该使用Any方法,因此我们应该编写method query而不是expression query。当然,我不知道Anyexpression query的等价物(至少它应该是,如method query,否则,它不好) 。如果有人知道,请留下一些评论。谢谢你。

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