2017-07-19 25 views
0

我有兩個嵌套的foreach語句Aspect Id和Aspect只返回單個記錄作爲最終結果。我有11個活動,其中某些方面相關的3個項目與AspecId和Aspect配對,但在循環之後,我只在我的報告中顯示一個方面我缺少什麼。如何在數據表中返回多條記錄如果我們在第二個foreach循環中返回多條記錄

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);  
    } 
+0

你在第二個循環中一遍又一遍地設置相同的字段? –

+0

如何確保我返回從第二個foreach循環返回的Aspects列表,並將字段設置爲我設置它們的位置? – user4261104

+0

我想你想要的可能是'impactRow [「AspectId」] = impactRow [「AspectID」]。ToString()+「,」+ riskAspect.Id'或者沿着那條線的東西 –

回答

0

第二個循環應該創建聚合的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()); 
+1

完美的工作就像魅力感謝百萬Pedreiro – user4261104

相關問題