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