2

私は次のクラスを持っています:

public class OrgAlertList
{
    public string CustMailName { get; set; }

    /// <summary>
    /// Gets all the alerts that apply to this customer.
    /// </summary>
    public virtual IEnumerable<OrgAlertSummary> Alerts { get; set; }
}

これには、2 番目のクラスの IEnumerable であるプロパティ (Alerts という名前) が含まれています。

public class OrgAlertSummary
{
    /// <summary>
    /// Message detailing the alert for the user.
    /// </summary>
    public string Message { get; set; }

    /// <summary>
    /// Message detailing how to fix alert.
    /// </summary>
    public string ActionMessage { get; set; }
}

OrgAlertList の Alerts プロパティには、ゼロから多数の OrgAlertSummary アイテムを含めることができます。

Alerts プロパティに少なくとも 1 つの OrgAlertSummary 項目が含まれる OrgAlertList 項目ごとに、CustMailName、Message、および ActionMessage を持つ新しい型にクラスをフラット化するために、Lambda 式を記述するか、LINQ クエリを使用する必要があります。誰でもこれを手伝ってもらえますか?

4

1 に答える 1

4

これを試してください:(未テスト)

var q = from orgAlert in myOrgAlertList
        from orgAlertSummary in orgAlert.Alerts
        select new { orgAlert.CustomMailName, 
                     orgAlertSummary.Message, 
                     orgAlertSummary.ActionMessage};

仮定myOrgAlertListは、ある種のIEnumerable<OrgAlertList>

このクエリは、CustomMailName、Message、および ActionMessage という名前のフィールドを持つ匿名型を作成します。この結果のリストを他のモジュールにエクスポートする場合は、匿名型を使用する代わりに、独自のクラスを定義して選択で作成することをお勧めします。

于 2012-09-27T18:58:23.063 に答える