Ошибка в представлении, когда я пытаюсь использовать наследовать волшебство Linq - PullRequest
0 голосов
/ 07 октября 2011

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

Невозможно создать постоянное значение типа 'Projekty03.ViewsModels.ParagrafViewModel'. В этом контексте поддерживаются только примитивные типы (такие как Int32, String и Guid).

    public ViewResult Index()
    {

        List<ParagrafViewModel> _paragrafparent = new List<ParagrafViewModel>();
        _paragrafparent.Add(new ParagrafViewModel { ParagrafID = 0, ParagrafNazwa = "Root" });

        var _paragrafparent2 = from pr in paragrafRepository.All
                               orderby pr.ParagrafID
                               select new ParagrafViewModel
                               {
                                   ParagrafID = pr.ParagrafID,
                                   ParagrafNazwa = pr.ParagrafNazwa
                               };

        var _paragrafparent3 = _paragrafparent.Concat(_paragrafparent2).AsEnumerable();

        var paragraf = from par in paragrafRepository.All
                       join rodzic_p in _paragrafparent3
                       on par.ParagrafParent equals rodzic_p.ParagrafID
                       orderby par.ParagrafParent, par.ParagrafID
                       select new ParagrafViewModel
                       {
                           ParagrafID = par.ParagrafID,
                           ParagrafNazwa = par.ParagrafNazwa,
                           ParagrafParent = par.ParagrafParent,
                           ParagrafCzynny = par.ParagrafCzynny,
                           ParagrafWplyw = par.ParagrafWplyw,
                           ParagrafParentNazwa = rodzic_p.ParagrafNazwa
                       };

        return View(paragraf);
    }

Я полагаю, что это неправильно с моей бедной магией, думаю, LINQ. Как решить это?

1 Ответ

0 голосов
/ 08 октября 2011

Хорошо, вот ответ на мой собственный вопрос. Я уверен, что это не очень хорошее решение, но ...

    public ViewResult Index()
    {

        List<ParagrafViewModel> _paragrafparent = new List<ParagrafViewModel>();
        _paragrafparent.Add(new ParagrafViewModel { ParagrafID = 0, ParagrafNazwa = "Root", ParagrafCzynny=false,  });

        var _paragrafparent2 = from pr in paragrafRepository.AllIncluding(paragraf => paragraf.WniosekPodzial)
                               orderby pr.ParagrafID
                               select new ParagrafViewModel
                               {
                                   ParagrafID = pr.ParagrafID,
                                   ParagrafNazwa = pr.ParagrafNazwa,
                                   ParagrafParent = pr.ParagrafParent,
                                   ParagrafCzynny = pr.ParagrafCzynny,
                                   ParagrafWplyw = pr.ParagrafWplyw,
                                   WniosekPodzialNazwa = pr.WniosekPodzial.WniosekPodzialNazwa
                               };

        var _paragrafparent3 = _paragrafparent.Concat(_paragrafparent2).AsEnumerable();

        var paragrafModel = from par in _paragrafparent3
                       join rodzic_p in _paragrafparent3
                       on par.ParagrafParent equals rodzic_p.ParagrafID
                       orderby par.ParagrafParent, par.ParagrafID
                       select new ParagrafViewModel
                       {
                           ParagrafID = par.ParagrafID,
                           ParagrafNazwa = par.ParagrafNazwa,
                           ParagrafParent = par.ParagrafParent,
                           ParagrafCzynny = par.ParagrafCzynny,
                           ParagrafWplyw = par.ParagrafWplyw,
                           ParagrafParentNazwa = rodzic_p.ParagrafNazwa,
                           WniosekPodzialNazwa = par.WniosekPodzialNazwa
                       };

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