Asp.net 如何检查ObservableCollection是否有重复数据?
我有一个连接到数据网格的集合Asp.net 如何检查ObservableCollection是否有重复数据?,asp.net,wpf,Asp.net,Wpf,我有一个连接到数据网格的集合ItemDemandCollection。如果用户输入相同的数据,则需要显示一条警报消息以显示数据重复 如何处理此问题?尝试对输入的数据使用ICollection.Contains(T)。 查找有关在datagrid中输入哪些数据的更多信息?您的每件商品都是什么类型的 例如,您可能正在绑定Employee类的实例集合,并在数据网格上将员工ID和姓名显示为列 如果是这样,则可能会在EmployeeName属性或EmployeeID属性上发生重复。但允许在Employee
ItemDemandCollection
。如果用户输入相同的数据,则需要显示一条警报消息以显示数据重复
如何处理此问题?尝试对输入的数据使用ICollection.Contains(T)。
查找有关在datagrid中输入哪些数据的更多信息?您的每件商品都是什么类型的 例如,您可能正在绑定
Employee
类的实例集合,并在数据网格上将员工ID和姓名显示为列
如果是这样,则可能会在EmployeeName
属性或EmployeeID
属性上发生重复。但允许在EmployeeName
上重复,因为任何两名员工都可以有相同的姓名
。但不允许使用相同的ID
因此,当输入一个ID而您失去焦点时,该项会被添加,并引发ObservableCollection.CollectionChanged
事件。处理此事件,在处理程序中,您可以检查“e.Action==Add”,如果是,则对现有项执行lambda查询,并检查输入值的ID
属性
if (e.Action == NotifyCollectionChangedAction.Add
&& MyItems.Where(
item => item.EmployeeID == e.NewItems[0].EmployeeID).Count() > 1)
{
//Duplicates found!
}
如果这对您没有帮助,那么请满足您的要求。曾尝试在WinRT中执行类似的操作,这对我很有效,我认为WPF也应该这样做。与WPF类似,它的答案或多或少。这假设您拥有的每个数据项都有一些唯一的ID(或任何唯一的值),并且所有项目(在集合中以及您将要添加的项目)都有相同的唯一ID字段
var duplicates = yourCollectionOfItems.Where((item) => item.UniqueID == itemYouAreAboutToAddToCollection.UniqueID);
if (duplicates.Any()) throw new SomeDuplicateException();
// And/or show your alert dialog, in this case.
“if(duplicates.Any())”与“if(duplicates.Count()>0)”相同
也可以使用“duplicates”变量链接成一行,不包含任何内容;e、 g
if (yourCollectionOfItems.Any((item) => item.UniqueID == itemYouAreAboutToAddToCollection.UniqueID))
{
// Do error handling here.
}