public static ObservableCollection <T> CompareCollectionIsChanged <T>(ObservableCollection <T> SourceList, ObservableCollection <T> DestList, string PropertyName)
        {
            ObservableCollection <T> tempList = new ObservableCollection <T>();

            foreach (T DestInfo in DestList)
            {
                T SourceInfo = SourceList.Where(info => GetPropertyValue(DestInfo, PropertyName) == GetPropertyValue(info, PropertyName)).FirstOrDefault();
                if (SourceInfo != null)
                {
                    if (AlgorithmClass.CheckIsChanged <T>(SourceInfo, DestInfo))
                    {
                        tempList.Add(DestInfo);
                    }
                }
            }
            return(tempList);
        }
 public static ObservableCollection <BOPInfo> GetBOPListByBOPType(ObservableCollection <BOPInfo> allBOPList, BOPType type)
 {
     return(AlgorithmClass.DeepClone <ObservableCollection <BOPInfo> >(new ObservableCollection <BOPInfo>(allBOPList.Where(info => info.BOP_Type == type))));
 }