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; }
}

它包含一个属性(名为 Alerts),它是我的第二类的 IEnumerable:

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 项。

我需要编写一个 Lambda 表达式,或使用 LINQ 查询,将类扁平化为一种新类型,其中包含每个 OrgAlertList 项目的 CustMailName、Message 和 ActionMessage,其中 Alerts 属性至少包含一个 OrgAlertSummary 项目。有人能帮忙吗?

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 的字段。如果您打算将此结果列表导出到其他模块,建议您定义自己的类并在 select 中创建它,而不是使用匿名类型。

于 2012-09-27T18:58:23.063 回答