C#中获取多个对象list中对象共有的属性项
程序员文章站
2022-05-03 12:45:50
场景 有一组数据list 每一个TestDataList是一个对象,此对象可能有温度数据,也可能没有温度数据。 有温度数据的情况下,温度数据属性又是一个list,可能有温度A、B、C等不同种类。 怎样在这组list找到共有的温度B。 这只是针对 ......
场景
有一组数据list<testdatalist>
每一个testdatalist是一个对象,此对象可能有温度数据,也可能没有温度数据。
有温度数据的情况下,温度数据属性又是一个list,可能有温度a、b、c等不同种类。
怎样在这组list<testdatalist>找到共有的温度b。
这只是针对温度数据,如果压力和bms情况也是如此。
注:
博客主页:
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
//存储所有辅助通道温度数据的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