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.
}