如何创建嵌套类列表,其中每个嵌套类的某个属性为真?

Posted

技术标签:

【中文标题】如何创建嵌套类列表,其中每个嵌套类的某个属性为真?【英文标题】:How can I create list of nested classes where a certain property of each nested class is true? 【发布时间】:2021-12-30 02:33:31 【问题描述】:

如果我有一个里面有嵌套模型的模型。如何根据 NotificationModel 设置 name 属性并返回一个列表,该列表基于嵌套模型中的属性?

我假设使用 Linq 和 Reflection。

所以我有类似的东西:(假设警报已初始化以及它们是否从数据库启用)。

public class AlarmController : IAlarmController

    public AlarmController()
            
        this.NotificationModel = new NotificationModel();
    
    
    public NotificationModel NotificationModel  get; set; 
    
    public List<AlarmModel> GetAlarmModels()
    
     //this.NotificationModel --something... where isEnabled == true.

     return new List<AlarmModel>();
    
       

public class NotificationModel

        public AlarmModel HardwareFault get; set; 

        public AlarmModel TimeoutFault  get; set; 

        public AlarmModel GenericFault  get; set; 


public class AlarmModel

    public string Name  get; set; 

    public bool isActive  get; set; 

    public bool isEnabled  get; set; 

    public bool isSilenced  get; set; 

我曾尝试过反思,但还没有找到像我这样的例子。我没有发布,因为我认为它会混淆问题。如果这不是正确的方法,请说出来。

【问题讨论】:

【参考方案1】:

如果我正确理解了您的要求,您希望在GetAlarmModels 中过滤该属性NotificationModel。然后您可以使用以下方法:

public List<AlarmModel> GetAlarmModels() => EnabledAlarms().ToList();

private IEnumerable<AlarmModel> EnabledAlarms()

    if(NotificationModel.HardwareFault.isEnabled)
        yield return NotificationModel.HardwareFault;
    if(NotificationModel.TimeoutFault.isEnabled)
        yield return NotificationModel.TimeoutFault;
    if(NotificationModel.GenericFault.isEnabled)
        yield return NotificationModel.GenericFault;

【讨论】:

以上是关于如何创建嵌套类列表,其中每个嵌套类的某个属性为真?的主要内容,如果未能解决你的问题,请参考以下文章

Django模板:如何通过每个字典的嵌套属性重新组合字典列表?

如何执行嵌套 Thymeleaf 循环以创建包含来自两个 JPA 表类的字段的表

python中的列表操作

类成员的编译顺序之嵌套类型对类的影响

如何在保持内部类私有的同时创建嵌套模型?

类型错误:无法在嵌套列表视图中读取 null 的属性“newdaycalendar”,其中 listmodel 动态创建了 qml