2010-02-10 1 views
1

저장 프로 시저를 두 번 호출하면 각기 다른 매개 변수가있는 문제가 있으며 두 개의 개별 목록이 필요하지만 linq이 데이터를 캐싱하고 위에 오류를 표시합니다.쿼리 결과를 두 번 이상 열거 할 수 없습니다.

나는 한 TBL에 ToList()을 사용하여, 다른 하나는 데이터를 수동으로 걷는 오류 메시지 라운드 얻는 두 가지 방법이 시도

내 코드 합계를 취득하기위한

CODE 아래 도시

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); 

} 

두 번째로 GetTotalAllTimesConsumption에 오류가 발생합니다.

목록의 처음으로 되돌아 갈 수있는 방법이 있습니까? FirstOrDefault라는 메소드가 도움이 될지 확실하지 않습니까?

건배

바울은 점점 어떤 오류

+0

코드 형식을 지정하십시오. –

+0

지금 포맷했습니다. – Paul

답변

0

? 당신은 그것을 지정하지 않았습니다. 각 호출에서 데이터 컨텍스트를 다시 작성해보십시오.

Ps : linq 쿼리의 목록으로 변환하려면 linq 쿼리의 결과에 대해 .ToList()를 호출하면됩니다.