2017-06-29 3 views
1

So habe ich meine Ansicht Setup wie dies in der Steuerung:Wie kann ich Sum aus einer anderen Tabelle in meinem Modell hinzufügen?

public ActionResult View(Guid projectID) 
    { 
     OnboardModel model = context.onboard_projectInfos.Where(x => x.projectID == projectID).Select(x => 
              new OnboardModel() 
              { 
               propertymanagername = x.propertymanagername, 
               propertymanagercontactemail = x.propertymanagercontactemail, 
               date_modified = (DateTime)x.date_modified, 
               projectmanagercontactnumber = x.projectmanagercontactnumber, 
               Developer = x.onboard_projectCreate.Developer, 
               status1 = x.onboard_projectCreate.status1, 
               ProjectName = x.onboard_projectCreate.ProjectName 
              }).SingleOrDefault(); 


     var pix = projectID.ToString(); 
     context.onboard_BuildingInfos.Where(x => x.buildprojectID == pix).GroupBy(x => x.buildprojectID).Select(g => { 
      model.totalres = g.Sum(b => b.numberofres); 
      model.totalcom = g.Sum(b => b.numberofcommer); 
     }); 

     return View(model); 
    } 

Problem die Summe von numberofres und numberofcommer von BuildingInfos Grabbing. Die Verwendung von .Select gibt mir den Fehler:

Fehler CS0411 Die Typargumente für die Methode 'Queryable.Select (IQueryable, Expression>)' kann nicht aus der Verwendung abgeleitet werden. Versuchen Sie, die Typargumente explizit anzugeben.

Wie schreibe ich diese LINQ-Anweisung richtig?

Danke.

Antwort

1

Sie können ein Objekt in einer Auswahl nicht ändern (Sie können nur ein neues Objekt erstellen). Außerdem können Sie einem vorhandenen Objekt keine neuen Eigenschaften hinzufügen.

Wir gehen davon aus, dass OnboardModel die Eigenschaften totalres und totalcom definiert.

var query = context.onboard_BuildingInfos 
        .Where(x => x.buildprojectID == pix) 
        .GroupBy(x => x.buildprojectID); 

foreach(var g in query) 
{ 
     model.totalres = g.Sum(b => b.numberofres); 
     model.totalcom = g.Sum(b => b.numberofcommer); 
} 
+0

Oh ich sehe, danke. –

Verwandte Themen