0

クラス内のリスト内のクラスメンバーの値にアクセスしたいと思います。私のクラスはこんな感じです。クラスには、着信アラームの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);
        }
    }
}
4

2 に答える 2

5

あなたはですべての詳細を選択することができますSelectMany

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

これにより、すべてに含まれるすべてのSureViewEventDetailsものが取得されますactiveEvents

于 2013-03-19T02:47:05.417 に答える
1

各activeEventのループ内で、詳細をループするだけです。

foreach (var activeEvent in activeEvents)
{
    foreach (var eventDetail in activeEvent.Details)
    {
        // do something with the detail
    }
}
于 2013-03-19T02:39:01.757 に答える