Использование результатов запроса к базе данных вместо отображения в сетке данных - PullRequest
0 голосов
/ 09 августа 2011

Я использую C # для создания приложения Silverlight 4.

Я пытаюсь сделать следующее:

        MapNode endNode = null;

        if (keyword != null && keyword != "")
        {
            EntityQuery<NodeIDProj> res = CampusQueries.getNodeIDByNameQuery(keyword);

            var queryres = CampusQueries.Load<NodeIDProj>(res, (items) =>
            {
                foreach (var item in items.Entities)
                {
                    MapNode n = mapHelp.getNodeByID(item.NodeID);

                    if (n != null)
                    {
                        endNode = n;
                        TrackAnimation();

                    }
                }

            }, true);
         }

Однако после этого момента моя переменная endNode все еще равна нулю. TrackAnimation () работает так, как будто endNode имеет допустимое значение, но вне оператора Load endNode возвращается к нулю.

Я знаю, что мне не хватает понимания того, как это работает, и я был бы очень признателен за предоставленную помощь.

То, что я пытаюсь сделать, - это запросить мою базу данных, и я хочу использовать эти результаты в других методах, а не отображать их в таблице данных.

Я хочу, чтобы endNode имел значение, которое я могу использовать в других методах.

Пожалуйста, помогите мне найти способ сделать это, спасибо!

EDIT:

Спасибо, SLaks

Могу ли я сделать что-то вроде:

MapNode endNode = null;

    if (keyword != null && keyword != "")
    {
        EntityQuery<NodeIDProj> res = CampusQueries.getNodeIDByNameQuery(keyword);

        var queryres = CampusQueries.Load<NodeIDProj>(res, (items) =>
        {
            foreach (var item in items.Entities)
            {
                MapNode n = mapHelp.getNodeByID(item.NodeID);

                if (n != null)
                {
                    endNode = n;
                    TrackAnimation();

                }
            }

        }, true);
     }
 queryres.Completed += new EventHandler(queryres_Completed);




void queryres_Completed(object sender, EventArgs e)
{
    //stuff
}

Если так, как я могу получить доступ к переменной endNode, как она объявлена ​​в другом методе?

1 Ответ

1 голос
/ 09 августа 2011

Ваш Load метод, вероятно, асинхронный, что означает, что обратный вызов происходит через некоторое время после выполнения остальной части вашего кода.

Вы можете использовать результат только после того, как вы его фактически получите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...