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
formatez votre code s'il vous plaît. –
Je l'ai formaté maintenant – Paul