我有以下课程:
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项。有人能帮忙吗?
答案 0 :(得分: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中创建它而不是使用匿名类型。