场景

有一组数据list<TestDataList>

每一个TestDataList是一个对象,此对象可能有温度数据,也可能没有温度数据。

有温度数据的情况下,温度数据属性又是一个list,可能有温度A、B、C等不同种类。

怎样在这组list<TestDataList>找到共有的温度B。

这只是针对温度数据,如果压力和BMS情况也是如此。

注:

博客主页:
https://blog.csdn.net/badao_liumang_qizhi

关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

  1. //存储所有辅助通道温度数据的list
  2. List<List<DataItem>> autxColumnsList = new List<List<DataItem>>();
  3. //存储所有辅助通道电压数据的list
  4. List<List<DataItem>> autvColumnsList = new List<List<DataItem>>();
  5. //存储所有BMS数据的list
  6. List<List<DataItem>> bmsColumnsList = new List<List<DataItem>>();
  7. //遍历所有的待比较的实验数据文件
  8. foreach (TestDataList dataList in Global.Instance.CompTestDataList)
  9. {
  10. if (dataList.AutxColumns != null && dataList.AutxColumns.Count > )
  11. {
  12. autxColumnsList.Add(dataList.AutxColumns);
  13. }
  14. else
  15. {
  16. isAllHaveAut = false;
  17. }
  18.  
  19. if (dataList.AuvxColumns != null && dataList.AuvxColumns.Count > )
  20. {
  21. autvColumnsList.Add(dataList.AuvxColumns);
  22. }
  23. else
  24. {
  25. isAllHaveAuv = false;
  26. }
  27.  
  28. if (dataList.BmsColumns != null && dataList.BmsColumns.Count > )
  29. {
  30. bmsColumnsList.Add(dataList.BmsColumns);
  31. }
  32. else
  33. {
  34. isAllHaveBMS = false;
  35. }
  36. }
  37.  
  38. #region 如果待比较的文件中全部都拥有辅助通道温度
  39.  
  40. if (isAllHaveAut)
  41. {
  42. List<DataItem> maxCoutItem = new List<DataItem>();
  43. List<DataItem> allHaveItem = new List<DataItem>();
  44. foreach (List<DataItem> item in autxColumnsList)
  45. {
  46. if(item.Count>maxCoutItem.Count)
  47. {
  48. maxCoutItem = item;
  49. }
  50. }
  51.  
  52. foreach (DataItem dataItem in maxCoutItem)
  53. {
  54. bool isAllHavedItem = true;
  55. foreach (List<DataItem> item in autxColumnsList)
  56. {
  57. if (!item.Contains(dataItem))
  58. {
  59. isAllHavedItem = false;
  60. }
  61. }
  62. if (isAllHavedItem)
  63. {
  64. allHaveItem.Add(dataItem);
  65. }
  66. }
  67.  
  68. foreach (DataItem item in allHaveItem)
  69. {
  70. ScaleTitleModel model = new ScaleTitleModel();
  71. model.TitleKey = item.DataPropertyName;
  72. model.Title = item.DisplayName;
  73. yRadioGrupItems.Add(model);
  74. }
  75. }
  76. #endregion
  77.  
  78. #region 如果待比较的文件中全部都拥有辅助通道电压
  79.  
  80. if (isAllHaveAuv)
  81. {
  82. List<DataItem> maxCoutItem = new List<DataItem>();
  83. List<DataItem> allHaveItem = new List<DataItem>();
  84. foreach (List<DataItem> item in autvColumnsList)
  85. {
  86. if (item.Count > maxCoutItem.Count)
  87. {
  88. maxCoutItem = item;
  89. }
  90. }
  91.  
  92. foreach (DataItem dataItem in maxCoutItem)
  93. {
  94. bool isAllHavedItem = true;
  95. foreach (List<DataItem> item in autvColumnsList)
  96. {
  97. if (!item.Contains(dataItem))
  98. {
  99. isAllHavedItem = false;
  100. }
  101. }
  102. if (isAllHavedItem)
  103. {
  104. allHaveItem.Add(dataItem);
  105. }
  106. }
  107.  
  108. foreach (DataItem item in allHaveItem)
  109. {
  110. ScaleTitleModel model = new ScaleTitleModel();
  111. model.TitleKey = item.DataPropertyName;
  112. model.Title = item.DisplayName;
  113. yRadioGrupItems.Add(model);
  114. }
  115. }
  116. #endregion
  117.  
  118. #region 如果待比较的文件中全部都拥有辅助通道电压
  119. if (isAllHaveBMS)
  120. {
  121. List<DataItem> maxCoutItem = new List<DataItem>();
  122. List<DataItem> allHaveItem = new List<DataItem>();
  123. foreach (List<DataItem> item in bmsColumnsList)
  124. {
  125. if (item.Count > maxCoutItem.Count)
  126. {
  127. maxCoutItem = item;
  128. }
  129. }
  130.  
  131. foreach (DataItem dataItem in maxCoutItem)
  132. {
  133. bool isAllHavedItem = true;
  134. foreach (List<DataItem> item in bmsColumnsList)
  135. {
  136. if (!item.Contains(dataItem))
  137. {
  138. isAllHavedItem = false;
  139. }
  140. }
  141. if (isAllHavedItem)
  142. {
  143. allHaveItem.Add(dataItem);
  144. }
  145. }
  146.  
  147. foreach (DataItem item in allHaveItem)
  148. {
  149. ScaleTitleModel model = new ScaleTitleModel();
  150. model.TitleKey = item.DataPropertyName;
  151. model.Title = item.DisplayName;
  152. yRadioGrupItems.Add(model);
  153. }
  154. }
  155. #endregion

C#中获取多个对象list中对象共有的属性项的更多相关文章

  1. 如何在 WPF 中获取所有已经显式赋过值的依赖项属性

    原文:如何在 WPF 中获取所有已经显式赋过值的依赖项属性 获取 WPF 的依赖项属性的值时,会依照优先级去各个级别获取.这样,无论你什么时候去获取依赖项属性,都至少是有一个有效值的.有什么方法可以获 ...

  2. Html5 中获取镜像图像 - 解决 WebGL 中纹理倒置问题

    Html5 中获取镜像图像 - 解决 WebGL 中纹理倒置问题 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致& ...

  3. struts2:JSON在struts中的应用(JSP页面中将对象转换为JSON字符串提交、JSP页面中获取后台Response返回的JSON对象)

    JSON主要创建如下两种数据对象: 由JSON格式字符串创建,转换成JavaScript的Object对象: 由JSON格式字符串创建,转换成JavaScript的List或数组链表对象. 更多关于J ...

  4. requests从api中获取数据并存放到mysql中

    python的requests库是一个非常强大的库,requests的安装方法十分简单,用: pip install requests 即可安装requests,安装成功后: import reque ...

  5. 如何在 messager/alert/confirm等消息提示框中 获取 / 设置 嵌入 html内容中的 input[type=checkbox]等的选中状态?

    总结, 有3点: 不能/不要 在 这些消息框 / 提示框/ 对话框中的 回调函数中去写代码: 获取嵌入 内容中input.checkbox的选中状态, 因为 虽然在这些框存在的时候, 这个 check ...

  6. android 中获取当前焦点所在屏幕中的位置 view.getLocationOnScreen(location)

    final int[] location = new int[2]; view.getLocationOnScreen(location); final int[] location = new in ...

  7. java中获取接口(方法)中的参数名字(eclipse设置编译参数)(java8 javac -parameters)

    interface接口参数 jdk1.7及以前使用spring功能实现的: 注意: 1.该功能只能获取类的方法的参数名,不能获取接口的方法的参数名. public static void test() ...

  8. 【2017-06-27】Js中获取地址栏参数、Js中字符串截取

    一.Js中获取地址栏参数 //从地址栏获取想要的参数 function GetQueryString(name) { var reg = new RegExp("(^|&)" ...

  9. ASP.NET 4.0 ListView等容器控件中获取ClientID值与HTML中自动生成ID字符串不一样问题。

    ASP.NET 4.0 中 ClientIDMode的属性 可以设置获取不同ID格式的值. 项目中遇到的问题: 1.ListView1 ItemDataBound事件中,获取ClientID结果与自动 ...

  10. 在WPF的MVVM框架中获取下拉选择列表中的选中项

    文章概述: 本演示介绍怎样在WPF的MVVM框架中.通过数据绑定的方式获取下拉列表中的选中项.程序执行后的效果例如以下图所看到的: 相关下载(代码.屏幕录像):http://pan.baidu.com ...

随机推荐

  1. 面试连环炮系列(十五):说说Eureka的高可用方案

    说说Eureka的高可用方案 至少3个Eureka实例才能满足高可用,配置方法如下: 准备三个节点node1,node2,node3. 在每个实例的application.xml文件里加入 eurek ...

  2. Maven使用教程三:maven的生命周期及插件机制详解

    前言 今天这个算是学习Maven的一个收尾文章,里面内容不局限于标题中提到的,后面还加上了公司实际使用的根据profile配置项目环境以及公司现在用的archetype 模板等例子. 后面还会总结一个 ...

  3. 从《彩色圆环》一题探讨一类环上dp的解法

    清橙A1202 bzoj2201 bsoj4074 试题来源 2010中国国家集训队命题答辩 问题描述 小A喜欢收集宝物.一天他得到了一个圆环,圆环上有N颗彩色宝石,闪闪发光.小A很爱惜这个圆环,天天 ...

  4. 松软科技Web课堂:JavaScript While 循环

    只要条件为 true,循环能够一直执行代码块. While 循环 while 循环会一直循环代码块,只要指定的条件为 true. 语法 while (条件) { 要执行的代码块 } 实例 在下面的例子 ...

  5. HTML DOM 学习

    HTML DOM 学习 By: Mirror王宇阳 E-mail:2821319009@qq.com 博客主页:https://www.cnblogs.com/wangyuyang1016/ DOM ...

  6. 搭建API Mock

    所需环境 Node.js + MySQL 5.7+ Redis 4.0+ Node.js 安装 .要安装nvm,需要安装构建源包所需的工具,CentOS 上安装,用这些命令来安装构建工具: sudo ...

  7. Hook Java API以获得MD5加密前数据

    Java实现MD5加密 在Java中,我们用MD5对数据进行加密,代码大概是这样的: import java.security.MessageDigest; import java.security. ...

  8. mysql主从同步问题梳理

    前言: MySQL主从复制故障机延迟原因有很多,之前详细介绍了Mysql主从复制的原理和部署过程,在mysql同步过程中会出现很多问题,导致数据同步异常.以下梳理了几种主从同步中可能存在的问题: 1) ...

  9. [转]为何选择 Flink

    本文转自:https://www.ituring.com.cn/book/tupubarticle/23229 第 1 章 为何选择 Flink 人们对某件事的正确理解往往来自基于有效论据的结论.要获 ...

  10. 请求*.html后缀无法返回json数据的问题

    在springmvc中请求*.html不可以返回json数据. 修改web.xml,添加url拦截格式.