我有一个函数如下:
IEnumerable<Group> GetAllChildren(int parentID)
{
using (Entities db = new Entities())
{
var result = (from x in db.Groups
where x.ParentID == parentID
select x).ToList();
foreach (Group child in result.ToList())
{
result.AddRange(GetAllChildren(child.GroupID));
}
return result;
}
}
在上面的函数中,如果我传递一个组名,我将得到所有级别的所有子节点。
现在我的查询看起来像这样:
GroupNamesWithCorrespondingEffects
= new ObservableCollection<GroupNameWithCorrespondingEffect>
(from g in db.Groups
select new GroupNameWithCorrespondingEffect
{
GroupID = g.GroupID,
GroupName = g.GroupName,
CorrespondingEffect = g.Master_Effects.Effect
}
);
上面的查询将给我所有的组。
现在我想从GroupNamesWithCorrespondingEffects
中删除所有group with id == 25
的子组。
我在第二次查询中尝试了.Remove(GetAllChildren(25))
。但我得到以下错误。
Collection.Remove(groupnamewithcorrespondence effect)有一些无效的参数。
希望这对你有帮助:
var childs = GetAllChildren(25).ToList();
var childIDList = childs.select(u => u.GroupID).ToList();
GroupNamesWithCorrespondingEffects = GroupNamesWithCorrespondingEffects
.Where(u => !childIDList.Contains(u.GroupID)).ToList();