从实体框架中的集合中删除项



我有一个函数如下:

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();

相关内容

  • 没有找到相关文章