рекурсивная функция для иерархических данных - PullRequest
0 голосов
/ 30 октября 2010

моя модель

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace amief.Models
{
    public class WebsiteModels
{
    public static void getPagesForPage(int pageId, dbDataContext db, List<page> myPages)
    {

        var pages = (from p in db.pages
                           where p.pageParent == pageId
                           select p);
        foreach (var item in pages)
        {
            myPages.Add(item);
            getPagesForPage(item.pageId, db, myPages);
        }
    }
}

}

вызывает процедуру

 List<page> myPages = null;

 WebsiteModels.getPagesForPage(0, db,myPages);

Я получаю сообщение об ошибке

System.NullReferenceException не было обработано кодом пользователя Сообщение = Ссылка на объектне задан экземпляр объекта.

в строке "myPages.Add (item);"

Я не понимаю ошибку ...

Ответы [ 2 ]

0 голосов
/ 30 октября 2010

Ну, «myPages» равно нулю, поэтому вызов метода для него приводит к исключению NullReferenceException.Тебе лучше написать

myPages = new List<page>();
0 голосов
/ 30 октября 2010

Вы устанавливаете myPages на null, прежде чем передать его на WebsiteModels.getPagesForPage().Поэтому вызовы myPages.Add(item); в вашем цикле поднимают NullReferenceException, потому что вы не можете вызвать метод для объекта null.

Возможно, вы захотите:

List<page> myPages = new List<page>();
WebsiteModels.getPagesForPage(0, db, myPages);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...