【发布时间】:2016-11-14 16:10:32
【问题描述】:
我正在尝试对另一个 List<> 内的 List<> 中的每个项目执行运行扩展方法,以返回给定类型的集合(由扩展方法返回)。
我最初尝试(但失败)使用 linq 执行此操作,但我有以下内容:
var dataset = GetReportDataset(org);
var reportData = new List<InterventionAndNeetRiskReportLineModel>();
foreach (var record in dataset)
{
foreach (var inter in record.InterventionHistory)
{
reportData.Add(inter.ToInterventionAndNeetRiskReportLineModel());
}
}
return _reportWriter.ReportCsvStream(reportData);
所以我的问题是,如何使用 linq 为子集合中的每个项目投影我的扩展方法的结果?
更新ToInterventionAndNeetRiskReportLineModel()扩展方法
public static InterventionAndNeetRiskReportLineModel ToInterventionAndNeetRiskReportLineModel(this InterventionHistory intervention)
{
return new InterventionAndNeetRiskReportLineModel()
{
Beneficiary = intervention.Person.Beneficiary,
CourseTitle = intervention.CourseTitle,
CaseNotes = intervention.CaseNotes,
EndDate = intervention.EndDate?.ToString(),
StartDate = intervention.StartDate.ToString(),
ParticipantId = intervention.Person.ParticipantId,
FirstEit = intervention.Person.EitScores.GetFirstEitReading().ToString(),
LastEit = intervention.Person.EitScores.GetLastEitReading().ToString(),
FirstLpt = intervention.Person.LptScores.GetFirstLptReading().ToString(),
LastLpt = intervention.Person.LptScores.GetLastLptReading().ToString(),
Gender = intervention.Person.Equalitites.Gender,
HoursAttended = intervention.NoOfHours.ToString(),
LanguageOfDelivery = intervention.DeliveryLanguage,
Providername = intervention.ProviderName,
QanCode = intervention.QanCode,
SchoolCollegeName = intervention.ProviderName
};
}
【问题讨论】:
-
不清楚扩展方法是什么,也不清楚“and failed”是什么意思。请提供minimal reproducible example。
-
您是否只是想查找一个列表中属于另一个列表的所有元素?您不需要为此进行扩展。
-
添加了扩展方法
-
record.InterventionHistory的类型是什么,那么inter的类型是什么?您将InterventionHistory用作集合 (foreach) 和平面类型(在扩展方法中)。两者之一但不是两者都应该是这种情况。在var上轻松一点,写出一些类型,看看你哪里出错了。
标签: c#