我有一個連接到數據網格的集合ItemDemandCollection
。如果用戶輸入相同的數據,則警報消息需要顯示數據的重複。如何檢查ObservableCollection是否有重複的數據?
我該如何處理?
我有一個連接到數據網格的集合ItemDemandCollection
。如果用戶輸入相同的數據,則警報消息需要顯示數據的重複。如何檢查ObservableCollection是否有重複的數據?
我該如何處理?
嘗試使用ICollection.Contains(T),輸入的數據。 查找更多about Collection.Contains Method
你在datagrid中輸入什麼數據?你的每個項目是什麼類型?
E.g.您可能會綁定一個Employee
類實例的集合,並在DataGrid上顯示員工ID和名稱列。
如果是這樣,則可能在EmployeeName
屬性或EmployeeID
屬性上發生重複。但可以允許EmployeeName
的重複,因爲任何兩名員工可以有相同的Name
。但是不允許使用相同的ID。
所以當輸入一個ID並且你失去焦點時,該項目被添加,並且它會引發ObservableCollection.CollectionChanged
事件。處理此事件並在處理程序,您可以檢查是否「e.Action ==添加」,如果對現有的項目,以便執行拉姆達查詢和檢查的ID
屬性輸入值....
if (e.Action == NotifyCollectionChangedAction.Add
&& MyItems.Where(
item => item.EmployeeID == e.NewItems[0].EmployeeID).Count() > 1)
{
//Duplicates found!
}
如果這對您沒有幫助,請詳細說明您的要求。
正試圖在WinRT中做類似的工作,這對我有用,我認爲它也應該用於WPF。與WPF類似,它或多或少都是答案。這假定您擁有的每個數據項都有一些唯一的ID(或任何唯一的值),並且所有項(集合中以及即將添加的)都具有相同的唯一ID字段。 「(duplicates.Any())」與「if(duplicates.Count()> 0)」相同「。
也可以使用「duplicates」變量鏈接成一行w/o;例如
if (yourCollectionOfItems.Any((item) => item.UniqueID == itemYouAreAboutToAddToCollection.UniqueID))
{
// Do error handling here.
}