2016-04-11 5 views
0

ich Elemente aus einer Liste zugreifen müssen, die ich mit dem folgenden Code am Zugriff istWie ohne Listenelemente erhalten für jede in MVC-Controller

foreach (var reportval in reportresponse) 
{ 
    foreach (var valitem in reportval.Comparison) 
    { 
     var responsemodel = new ReportResponseModel(); 
     responsemodel.StudentVariable = valitem.StudentVariable; 
     responsemodel.Lighter = valitem.Lighter; 
     responsemodel.Matched = valitem.Matched; 
     responsemodel.Stronger = valitem.Stronger; 
     reportResponseModel.Add(responsemodel);        
    } 
}; 

Ich habe versucht, den folgenden Code die Schleife zu verlassen, ohne Retirting der ersten Schleife. Aber es funktioniert nicht.

if (reportresponse.Count == reportResponseModel.Count) { break; }; 

Ich habe versucht, auch die folgende Art und Weise die innere Liste von der ersten Schleife zuzugreifen, aber es ist nicht zugänglich hier

foreach (var reportval in reportresponse.Comparison) 

Kann jemand bitte auf das helfen?

+0

Umbrechen Sie den Code in eine 'public List MyMethod() {...}' und verwenden Sie 'if (reportstrange.Count == reportResponseModel.Count) {return reportResponseModel; }; zum Verlassen der Funktion und zurück die Sammlung –

+0

Seine bereits in dem folgenden Verfahren eingewickelt interne List MapToViewModel (List reportresponse) { } – TechNo

+0

Dann Zugabe 'if (reportresponse.Count == reportResponseModel .Count) {return reportResponseModel; }; 'nach' reportResponseModel.Add (responsemodel); 'sollte gut funktionieren (obwohl es nicht klar ist, was der Zweck Ihrer' if'-Anweisung wäre) –

Antwort

0

Ich aktualisierte den Code mit den folgenden Änderungen.

if (reportresponse.Count == reportResponseModel.Count) 
{ return reportResponseModel; }; 

nach

reportResponseModel.Add(responsemodel); 

Dank @Stephen Muecke !!

0

Versuchen Sie diese

foreach (var reportval in reportresponse.Comparison) 
{ 

     // var responsemodel = new ReportResponseModel(); 
     responsemodel.StudentVariable = valitem.StudentVariable; 
     responsemodel.Lighter = reportval .Lighter; 
     responsemodel.Matched = reportval .Matched; 
     responsemodel.Stronger = reportval .Stronger; 
     //reportResponseModel.Add(responsemodel);        
    } 
}; 
+0

Ja und es heißt Der Name "responsemodel" existiert in diesem Zusammenhang nicht. – TechNo

+0

ich möchte Sie etwas fragen ... Sie sind Iteration in einer Liste namens reportsantwort und dann erstellen Sie ein Objekt von ReportResponseModel? – Apoorv

0

Haben Sie versucht, Linq des SelectMany?

Sie können so etwas wie

var reportResponseModel = reportresponse.SelectMany(r => r.Comparison, (r, c) => 
    new ReportResponseModel 
    { 
     StudentVariable = c.StudentVariable, 
     Lighter = c.Lighter, 
     Matched = c.Matched, 
     Stronger = c.Stronger 
    }); 

tun Dann können Sie eine zusätzliche Filterung anwenden wie bei .Where oder .Take nur benötigt, Anzahl der Elemente zu haben.

Verwandte Themen