Query如何包含任何列表

时间:2015-07-02 20:21:29

标签: c# linq

我有一个班组和一个清单

我包含dotnetFiddle

class Group
{
    public List<int> manyID;
    public int otherID;
}

    List<Group> allGroup = new List<Group>();
    Group g;

    g = new Group();
    g.manyID = new List<int>(new int[] { 1, 3 } );
    g.otherID = 1;
    allGroup.Add(g);

    g = new Group();
    g.manyID = new List<int>(new int[] { 0, 2, 4 } );
    g.otherID = 2;
    allGroup.Add(g);

    g = new Group();
    g.manyID = new List<int>(new int[] { 2, 3 } );
    g.otherID = 3;
    allGroup.Add(g);

我希望过滤所有具有来自manyID的任何ID的组,这些ID出现在子组列表中。

Group subGroup = new Group();
subGroup.manyID = new List<int>(new int[] { 0, 1 } ); 

对于单个ID我知道怎么做。这只会带来第一组。

List<Group> filterGroup = allGroup
              .Where( a => subGroup.manyID.Contains( a.otherID))
              .ToList();

列表是什么?这应该带来前两组。

List<Group> filterGroup = allGroup
              .Where( a => subGroup.manyID.Contains( **a.manyID**))
              .ToList();

2 个答案:

答案 0 :(得分:1)

试试这个:

    filterGroup = allGroup
         .Where(a => subGroup.manyID.Intersect(a.manyID).Any())
         .ToList();

答案 1 :(得分:0)

另一种解决方案:

var filterGroup = allGroup
         .Where(a => a.manyID.Any(subGroup.manyID.Contains))
         .ToList();