当我尝试使用继承Linq魔法时视图出错

时间:2011-10-07 10:24:11

标签: asp.net-mvc-3 linq-to-sql

我尝试制作表格,我保留了子项 - 父数据。父母的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 :(得分:0)

好的,这是我自己的问题的答案。我肯定不是一个漂亮的解决方案,但......

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