我想知道是否有办法使用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>();
先谢谢!
答案 0 :(得分:5)
根据您的要求,我认为我们应该使用Any
方法,因此我们应该编写method query
而不是expression query
。当然,我不知道Any
中expression query
的等价物(至少它应该是短,如method query
,否则,它不好) 。如果有人知道,请留下一些评论。谢谢你。
var FilteredAList = ListOfA.Where(x=>ListOfB.Any(y=>x.Code==y.Code && y.Name=="yoda"))
.ToList<A>();