【问题标题】:How to get values from class list inside a class using linq如何使用linq从类中的类列表中获取值
【发布时间】:2013-03-19 10:47:05
【问题描述】:

我想访问类内列表中的类成员值。我的课是这样的。 SureViewEvents 类包含传入警报的父级详细信息,SureViewEventDetails 是警报的详细信息值。我想使用 LINQ 循环遍历类 SureViewEvents 并遍历详细信息行(如果已填充)。

我该怎么做?

public class SureViewEvents
{
    public string EventId { get; set; }
    public string GroupId { get; set; }
    public string DateTimeCreated { get; set; }
    public string GroupTitle { get; set; }
    public string EventTitle { get; set; }
    public string SubscriberId { get; set; }
    public bool Closed { get; set; }

    public List<SureViewEventDetails> Details { get; set; }
}

//EventID|EventRecordID|CreatedDate|EventRecordTypeID|Details|Input1|Input2|EventCode|SubscriberID|EventTitle|SerialNo
public class SureViewEventDetails
{
    public string EventId { get; set; }
    public string EventRecordID { get; set; }
    public string CreateDate { get; set; }
    public string EventRecordTypeID { get; set; }
    public string Details { get; set; }
    public string Area { get; set; }
    public string Zone { get; set; }
    public string EventCode { get; set; }
    public string SubscriberID { get; set; }
    public string EventTitle { get; set; }
    public int SerialNo { get; set; }
    public bool Handled { get; set; }
}

我可以使用以下方法检索父级值,但我不确定如何访问已使用此结构填充的详细信息。任何建议表示赞赏!

var activeEvents = (from sve in m_sureViewEvents 
                    select sve).ToList();

lock (m_driverLock)
{
    foreach (var activeEvent in activeEvents)
    {
        if (activeEvent.Closed == false)
        {
            m_fepConnector.HandleAlarms();
            DownloadZipArchive(activeEvent.EventId);
            CloseSureViewEvent(activeEvent.EventId);
        }
    }
}

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    您可以使用SelectMany选择所有详细信息:

    foreach (var details in activeEvents.SelectMany(e => e.Details))
    {
        // ... Stuff
    }
    

    这将获得所有SureViewEventDetails 中的所有activeEvents

    【讨论】:

    • 感谢您立即实施此操作!
    【解决方案2】:

    在每个 activeEvent 的循环中,您可以简单地循环查看详细信息:

    foreach (var activeEvent in activeEvents)
    {
        foreach (var eventDetail in activeEvent.Details)
        {
            // do something with the detail
        }
    }
    

    【讨论】:

    • 谢谢,我没有足够的声誉,否则我也会投票赞成。
    猜你喜欢
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 2019-03-24
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 2011-05-04
    相关资源
    最近更新 更多