2012-04-03 3 views
0

Я пытаюсь загрузить таблицу координат формы из базы данных для построения на карте Silverlight bing. Структура таблицы, которую меня интересует, находится здесь http://dl.dropbox.com/u/10440538/ADO.png.вложенные петли foreach и служба домена домена WCF

Использование службы wcf ria Я могу загрузить данные в порядке, но мне нужна помощь с моим кодом, чтобы вытащить данные самого низкого уровня (координаты) и разделить их на коллекции. Конечный результат должен быть таким, чтобы у меня была коллекция LocationCollections, одна LocationCollection для каждой карты в базе данных.

Это мой loadoperation обратного

void FarmsLoaded(LoadOperation<Farm> loadOp) { 

     LocationCollection lc = new LocationCollection(); 

     foreach (Farm f in loadOp.Entities) { 
      foreach (FarmLocation fl in f.FarmLocations) { 
       foreach (MapShape ms in fl.MapShapes) { 
        lc.Clear(); 
        foreach (MapPoint mp in ms.MapPoints) { 
         lc.Add(new Location(mp.Latitude, mp.Longitude)); 
        } 
        shapeList.Add(lc); //observablecollection of LocationCollections 
       } 
      } 
     } 
    } 

shapeList затем привязывается к карте слоя. К сожалению, когда я запускаю это, рисуется только последняя карта в db. Я думаю, что я неправильно понимаю, как проходит привязка foreach, поэтому я бы оценил любые усилия по просветлению по правильному использованию вложенных foreach в этой ситуации или любые альтернативные предложения, если foreach не подходит (LINQ?)

+0

Поддерживает ли shapeList все правильные значения при прохождении через него? Означает ли он последние значения при ударе lc.Clear()? –

+0

Функция clear удаляет его из панели управления, если я продолжаю создавать новые LocationCollections каждый раз, когда кажется, что он работает нормально. Спасибо –

ответ

0

Я думаю, что проблема не связана с циклом foreach, а вместо этого очистка lc. Поскольку вы читаете lc on для каждой карты, они, похоже, также удаляются из шейпинга.

+0

Да, если я изменил эту строку lc.clear() на 'LocationCollection lc = new LocationCollection();' то это работает, grrr Я думал, что я уже пробовал это ... –

Смежные вопросы