我有一个班组和一个清单
我包含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();
答案 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();