C# Linq查询列表包含一个列表

C# Linq查询列表包含一个列表,c#,linq,C#,Linq,我有两个a级成绩: public class ObjectA { public int Id; public string Name; } public class ObjectB { public int Id; public string Name; public List<ObjectA> ListOfObjectA; } 但这显然是一个例外。我用谷歌搜索了一下,但我觉得我的搜索技能在这方面做得不太好,有人能给一个忍者一个惊喜吗? (

我有两个a级成绩:

public class ObjectA
{
    public int Id;
    public string Name;
}

public class ObjectB
{
    public int Id;
    public string Name;
    public List<ObjectA> ListOfObjectA;
}
但这显然是一个例外。我用谷歌搜索了一下,但我觉得我的搜索技能在这方面做得不太好,有人能给一个忍者一个惊喜吗?
(最好是在lambda表达式中)

您是在尝试获取所有对象都在ListOfIdsA中的对象列表,还是其中任何一个

我想你想要:

ListObjectB.Where(p => p.ListOfObjectA.Any(x => ListOfIdsA.Contains(x.Id)))


(顺便说一句,如果它很大的话,你可能想把它做成一个
ListOfIdsA
a
HashSet

每天学习新的东西……出于某种原因,我一直认为扩展方法是解决这个问题的方法。@Justin:那么,所有和任何扩展方法:)@JonSkeet这可能需要一个单独的问题,但如果我想知道所有ObjectA在ListOfIdsA中的位置呢?我尝试了“全部”,但似乎过滤器基本上不是applied@BZ:这已经是查询正在执行的操作。我认为另一个问题(用一个简短但完整的例子)可能会有用,是的。@SharifYazdian:一个使用
All
,一个使用
Any
。但是没有必要使用
ToList()
,除非您确实需要具体化结果。
ListObjectB.Where(p => p.ListOfObjectA.Any(x => ListOfIdsA.Contains(x.Id)))
ListObjectB.Where(p => p.ListOfObjectA.All(x => ListOfIdsA.Contains(x.Id)))