我有2个类(class):

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

public class ObjectB
{
    public int Id;
    public string Name;
    public List<ObjectA> ListOfObjectA;
}

因此,我有两个列表:一个是ObjectB(ListObjectB),另一个是包含ObjectA的ID列表(称为ListOfIdsA)。
如果这我想获得ObjectB的列表,其中ObjectB.ListOfObjectA在ListOfIdsA中。

我的第一个(也是错误的)方法是
ListObjectB.Where(p=> ListOfIdsA.Contains(p.ListOfObjectA.Select(b=>b.Id)))

但这显然引发了异常。我用谷歌搜索它,stackoverflowed,但是我在想我的搜索能力不是很好,有人可以给这个忍者打个招呼吗?
(最好在lambda表达式中)

最佳答案

您是否要获取所有ObjectA都位于ListOfIdsA中或其中任何一个的ObjectB的列表?

我认为您想要:

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

或者
ListObjectB.Where(p => p.ListOfObjectA.All(x => ListOfIdsA.Contains(x.Id)))

(如果大小很大,顺便说一句,您可能希望将ListOfIdsA设为HashSet<string>。)

关于c# - Linq查询列表包含一个列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2364090/

10-13 08:11
查看更多