C# 如何检测从列表中删除或添加

C# 如何检测从列表中删除或添加,c#,wpf,linq,entity-framework,C#,Wpf,Linq,Entity Framework,现在,我有一个数据库,有学生ID和学生姓名 studentsCollection.Where(c => c.ID.Contains(":")); 然后,我只想让那些学生知道他们的ID中有“冒号”。当我只使用where子句时,我会得到类似“edititem不允许用于此视图”的错误。 然而,当我把这句话变成(下面) 增加ToList函数;它可以编辑,但不能更新甚至删除 有人知道我如何修正这个错误吗 如果没有足够的信息知道我在问什么,请告诉我,谢谢。 -----编辑----- 下面是我的sel

现在,我有一个数据库,有学生ID和学生姓名

studentsCollection.Where(c => c.ID.Contains(":"));
然后,我只想让那些学生知道他们的ID中有“冒号”。当我只使用where子句时,我会得到类似“edititem不允许用于此视图”的错误。 然而,当我把这句话变成(下面)

增加ToList函数;它可以编辑,但不能更新甚至删除

有人知道我如何修正这个错误吗

如果没有足够的信息知道我在问什么,请告诉我,谢谢。

-----编辑-----

下面是我的seletedchanged函数

错误情况:当我只使用where子句时,我将得到“此视图不允许使用edititem” 无法更新情况:当我添加ToList函数时,我将工作;但是,我不会更新我的数据

private void StudentsDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var selectedStudents = e.AddedItems[0] as Students;

            var studentsCollection = selectedStudents.Data;

            studentsCollection.AssociationChanged += ColumnsCollection_Changed;
            var studentsViewSource = ((CollectionViewSource)(this.FindResource("StudentsDataViewSource")));

            studentsViewSource.Source = studentsCollection.Where(c => c.ID.Contains(":")).ToList();
        }

        private void ColumnsCollection_Changed(object sender, System.ComponentModel.CollectionChangeEventArgs e)
        {
            if (e.Action == CollectionChangeAction.Remove)
            {
                studySystemEntities.Data.DeleteObject(e.Element as Data);
            }
            else if (e.Action == CollectionChangeAction.Add)
            {
                studySystemEntities.Data.AddObject(e.Element as Data);
            }
        }

请添加一个小但有效的示例,说明您的问题您收到的确切错误是什么?为什么拒绝投票?问题可能不精确,但它是一个有效的编程问题什么样的应用程序?ASP.Net,Winform,wpf@Blachshma如果我使用ToList,应用程序将工作,但我不会更新数据。
private void StudentsDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var selectedStudents = e.AddedItems[0] as Students;

            var studentsCollection = selectedStudents.Data;

            studentsCollection.AssociationChanged += ColumnsCollection_Changed;
            var studentsViewSource = ((CollectionViewSource)(this.FindResource("StudentsDataViewSource")));

            studentsViewSource.Source = studentsCollection.Where(c => c.ID.Contains(":")).ToList();
        }

        private void ColumnsCollection_Changed(object sender, System.ComponentModel.CollectionChangeEventArgs e)
        {
            if (e.Action == CollectionChangeAction.Remove)
            {
                studySystemEntities.Data.DeleteObject(e.Element as Data);
            }
            else if (e.Action == CollectionChangeAction.Add)
            {
                studySystemEntities.Data.AddObject(e.Element as Data);
            }
        }