C#中獲取多個對象list中對象共有的屬性項

場景

有一組數據list<TestDataList>編程

每個TestDataList是一個對象,此對象可能有溫度數據,也可能沒有溫度數據。spa

有溫度數據的狀況下,溫度數據屬性又是一個list,可能有溫度A、B、C等不一樣種類。.net

怎樣在這組list<TestDataList>找到共有的溫度B。code

 

 

這只是針對溫度數據,若是壓力和BMS狀況也是如此。對象

注:blog

博客主頁:
https://blog.csdn.net/badao_liumang_qizhi
關注公衆號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。 教程

實現

 //存儲全部輔助通道溫度數據的list
                List<List<DataItem>> autxColumnsList = new List<List<DataItem>>();
                //存儲全部輔助通道電壓數據的list
                List<List<DataItem>> autvColumnsList = new List<List<DataItem>>();
                //存儲全部BMS數據的list
                List<List<DataItem>> bmsColumnsList = new List<List<DataItem>>();
                //遍歷全部的待比較的實驗數據文件
                foreach (TestDataList dataList in Global.Instance.CompTestDataList)
                 {
                        if (dataList.AutxColumns != null && dataList.AutxColumns.Count > 0)
                        {
                            autxColumnsList.Add(dataList.AutxColumns);
                        }
                        else
                        {
                            isAllHaveAut = false;
                        }

                        if (dataList.AuvxColumns != null && dataList.AuvxColumns.Count > 0)
                        {
                            autvColumnsList.Add(dataList.AuvxColumns);
                        }
                        else
                        {
                            isAllHaveAuv = false;
                        }

                        if (dataList.BmsColumns != null && dataList.BmsColumns.Count > 0)
                        {
                            bmsColumnsList.Add(dataList.BmsColumns);
                        }
                        else
                        {
                            isAllHaveBMS = false;
                        }
                    }

                #region 若是待比較的文件中所有都擁有輔助通道溫度

                if (isAllHaveAut)
                    {
                        List<DataItem> maxCoutItem = new List<DataItem>();
                        List<DataItem> allHaveItem = new List<DataItem>();
                        foreach (List<DataItem> item in autxColumnsList)
                        {
                            if(item.Count>maxCoutItem.Count)
                            {
                                maxCoutItem = item;
                            }
                        }
                        
                        foreach (DataItem dataItem in maxCoutItem)
                        {
                            bool isAllHavedItem = true;
                            foreach (List<DataItem> item in autxColumnsList)
                            {
                                if (!item.Contains(dataItem))
                                {
                                    isAllHavedItem = false;
                                }
                            }
                            if (isAllHavedItem)
                            {
                                allHaveItem.Add(dataItem);
                            }
                        }

                        foreach (DataItem item in allHaveItem)
                        {
                            ScaleTitleModel model = new ScaleTitleModel();
                            model.TitleKey = item.DataPropertyName;
                            model.Title = item.DisplayName;
                            yRadioGrupItems.Add(model);
                        }
                    }
                #endregion

                #region 若是待比較的文件中所有都擁有輔助通道電壓
               
                    if (isAllHaveAuv)
                    {
                        List<DataItem> maxCoutItem = new List<DataItem>();
                        List<DataItem> allHaveItem = new List<DataItem>();
                        foreach (List<DataItem> item in autvColumnsList)
                        {
                            if (item.Count > maxCoutItem.Count)
                            {
                                maxCoutItem = item;
                            }
                        }

                        foreach (DataItem dataItem in maxCoutItem)
                        {
                            bool isAllHavedItem = true;
                            foreach (List<DataItem> item in autvColumnsList)
                            {
                                if (!item.Contains(dataItem))
                                {
                                    isAllHavedItem = false;
                                }
                            }
                            if (isAllHavedItem)
                            {
                                allHaveItem.Add(dataItem);
                            }
                        }

                        foreach (DataItem item in allHaveItem)
                        {
                            ScaleTitleModel model = new ScaleTitleModel();
                            model.TitleKey = item.DataPropertyName;
                            model.Title = item.DisplayName;
                            yRadioGrupItems.Add(model);
                        }
                    }
                #endregion

                #region 若是待比較的文件中所有都擁有輔助通道電壓
                    if (isAllHaveBMS)
                    {
                        List<DataItem> maxCoutItem = new List<DataItem>();
                        List<DataItem> allHaveItem = new List<DataItem>();
                        foreach (List<DataItem> item in bmsColumnsList)
                        {
                            if (item.Count > maxCoutItem.Count)
                            {
                                maxCoutItem = item;
                            }
                        }

                        foreach (DataItem dataItem in maxCoutItem)
                        {
                            bool isAllHavedItem = true;
                            foreach (List<DataItem> item in bmsColumnsList)
                            {
                                if (!item.Contains(dataItem))
                                {
                                    isAllHavedItem = false;
                                }
                            }
                            if (isAllHavedItem)
                            {
                                allHaveItem.Add(dataItem);
                            }
                        }

                        foreach (DataItem item in allHaveItem)
                        {
                            ScaleTitleModel model = new ScaleTitleModel();
                            model.TitleKey = item.DataPropertyName;
                            model.Title = item.DisplayName;
                            yRadioGrupItems.Add(model);
                        }
                    }
                    #endregion