2010-02-10 4 views
1

J'ai un problème où j'appelle un double proedure stocké, chacun avec des paramètres différents et je besoin de 2 listes séparées mais LINQ est la mise en cache des données et aussi me donner l'erreur ci-dessusrésultats de la requête ne peuvent être dénombrées plus d'une erreur une fois

J'ai essayé 2 méthodes différentes pour contourner le message d'erreur, un à l'aide ToList() sur TBL et l'autre marche manuellement à travers les données

Mon code est illustré ci-dessous

CODE pOUR oBTENIR lES TOTAUX

public static List<MeterTotalConsumpRecord> GetTotalAllTimesConsumption(DateTime dtStart, DateTime dtEnd, EUtilityGroup ug, int nMeterSelectionType, int nCustomerID, 
     int nUserID, string strSelection, bool bClosedLocations, bool bDisposedLocations) 
    { 

     dbChildDataContext db = DBManager.ChildDataConext(nCustomerID); 

     db.MeterTotalConsumpRecordSet.MergeOption = System.Data.Objects.MergeOption.NoTracking; 
     var tbl = from t in db.GetTotalConsumptionByMeter(dtStart, dtEnd, (int) ug, nMeterSelectionType, nCustomerID, nUserID, strSelection, bClosedLocations, bDisposedLocations, 1)      
        select t; 

     List<MeterTotalConsumpRecord> objList = new List<MeterTotalConsumpRecord>(); 

     foreach (MeterTotalConsumpRecord objRecord in tbl) 
     { 
      objList.Add(objRecord); 
     } 
     return objList; 

    } 

    public static List<MeterTotalConsumpRecord> GetTotalDayConsumption(DateTime dtStart, DateTime dtEnd, EUtilityGroup ug, int nMeterSelectionType, int nCustomerID, 
       int nUserID, string strSelection, bool bClosedLocations, bool bDisposedLocations) 
    { 
     dbChildDataContext db = DBManager.ChildDataConext(nCustomerID); 
     db.MeterTotalConsumpRecordSet.MergeOption = System.Data.Objects.MergeOption.NoTracking; 
     var tbl = from t in db.GetTotalConsumptionByMeter(dtStart, dtEnd, (int)ug, nMeterSelectionType, nCustomerID, nUserID, strSelection, bClosedLocations, bDisposedLocations, 3) 
        select t; 

     return tbl.ToList(); 
    } 

{ 

...Code for setting properties using parameters.. 

_P2Totals = ProfileDataService.DataService.GetTotalAllTimesConsumption(_P2StartDate, _P2EndDate, EUtilityGroup.Electricity, 1, nCustomerID, nUserID, strLocations, bIncludeClosedLocations, bIncludeDisposedLocations); 

    _P1Totals = ProfileDataService.DataService.GetTotalAllTimesConsumption(_StartDate, _EndDate, EUtilityGroup.Electricity, 1, nCustomerID, nUserID, strLocations, 
     bIncludeClosedLocations, bIncludeDisposedLocations); 


    PopulateLines() //This fills up a list of objects with information for my report ready for the totals to be added 

    PopulateTotals(_P1Totals, 1); 
    PopulateTotals(_P2Totals, 2); 

} 

Je reçois l'erreur la deuxième fois que je vais dans GetTotalAllTimesConsumption

Est-il possible que je peux revenir au début de la liste? Il y a une méthode appelée FirstOrDefault pas sûr si cela aiderait?

Vive

Paul

+0

formatez votre code s'il vous plaît. –

+0

Je l'ai formaté maintenant – Paul

Répondre

0

Quelle erreur obtenez-vous? Vous ne l'avez pas spécifié. Essayez de recréer le contexte de données à chaque appel?

Ps: Pour convertir à une liste sur une requête LINQ, vous pouvez simplement appeler .ToList() sur le résultat de la requête LINQ