результаты запроса не могут быть перечислены более одного раза ошибка - PullRequest
1 голос
/ 10 февраля 2010

У меня есть проблема, когда я вызываю хранимую процедуру дважды, каждый с разными параметрами, и мне нужно 2 отдельных списка, но linq кэширует данные, а также выдает ошибку выше

Я пробовал 2 разных способа обойти сообщение об ошибке, один с помощью ToList () на tbl, а другой вручную, просматривая данные

Мой код показан ниже

КОД ДЛЯ ПОЛУЧЕНИЯ ИТОГО

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

}

Я получаю ошибку во второй раз, когда захожу в GetTotalAllTimesConsump

Есть ли способ, которым я могу вернуться к началу списка? Есть метод FirstOrDefault, который не уверен, поможет ли это?

Приветствия

Пол

1 Ответ

0 голосов
/ 09 февраля 2010

Какую ошибку вы получаете? Вы не указали это. Попробуйте заново создать контекст данных при каждом вызове?

Ps: чтобы преобразовать в список по запросу linq, вы можете просто вызвать .ToList () для результата запроса linq

...