C# 如果在第二个foreach循环中返回了多个记录,那么如何使用datatables检索多个记录

C# 如果在第二个foreach循环中返回了多个记录,那么如何使用datatables检索多个记录,c#,C#,我有两个嵌套的foreach语句Aspect Id,Aspect只返回一条记录作为最终结果。我有11个活动,其中一些关联的Aspect带有3个项目,作为AspecId和Aspect配对,但在循环之后,我的报告Aspect上只显示了一个我缺少的内容 foreach (RiskActivity found in activities) { List<RiskAspect> aspects = RiskProvider.ListRiskAspect(found.Id).ToLi

我有两个嵌套的foreach语句Aspect Id,Aspect只返回一条记录作为最终结果。我有11个活动,其中一些关联的Aspect带有3个项目,作为AspecId和Aspect配对,但在循环之后,我的报告Aspect上只显示了一个我缺少的内容

 foreach (RiskActivity found in activities)
 {
    List<RiskAspect> aspects = RiskProvider.ListRiskAspect(found.Id).ToList();

    DataRow impactRow = impactTable.NewRow();

    impactRow.SetField("ActivityId", found.Id);
    impactRow.SetField("Activity", found.Activity);
    impactRow.SetField("OrderNumber", found.OrderNumber);   

    foreach (RiskAspect riskAspect in aspects)
    {           
        impactRow.SetField("AspectId", riskAspect.Id);
        impactRow.SetField("Aspect", riskAspect.AspectHazard);     
    }
foreach(在活动中找到RiskActivity)
{
List aspects=RiskProvider.ListRiskAspect(found.Id).ToList();
DataRow impactRow=impactTable.NewRow();
impactRow.SetField(“ActivityId”,found.Id);
impactRow.SetField(“活动”,found.Activity);
impactRow.SetField(“OrderNumber”,found.OrderNumber);
foreach(风险方面风险方面方面)
{           
impactRow.SetField(“AspectId”,riskAspect.Id);
impactRow.SetField(“方面”,riskAspect.AspectHazard);
}

第二个循环应该只创建聚合的AspectId和Aspect。然后将它们更新到列:

var ids = new StringBuilder();
var aspects = new StringBuilder();
foreach (RiskAspect riskAspect in aspects)
{           
    ids.AppendLine(riskAspect.Id);  // You can use Append to keep in the same line
    aspects.AppendLine(riskAspect.AspectHazard);
}
impactRow.SetField("AspectId", ids.ToString());
impactRow.SetField("Aspect", aspects.ToString());

您正在第二个for循环中反复设置同一字段?如何确保返回从第二个foreach循环返回的方面列表,并在设置字段时设置字段?我想您可能需要的是
impactRow[“AspectId”]=impactRow[“AspectId”].ToString()+,”+riskAspect.Id
或类似的东西我尝试了一下,但没有发现你只是在创建(然后不断更新)1个单独的
DataRow
实例,因此您只得到1行。您需要为要添加到
impactTable
的每一行创建1个
DataRow
。完美的效果非常好,感谢一百万佩德雷罗