Próbuję przekonwertować List<Topic>
na typ anonimowy lub dynamiczny za pomocą projekcji linq ... Używam następującego kodu, ale nie działa on poprawnie . Zwraca typ dynamiczny bezbłędnie, jednak gdy próbuję wyliczyć pole Dzieci (list<object/topic>
) to mówiList <T> Projekcja LINQ na typ anonimowy lub dynamiczny
Wyniki View = Typ
'<>f__AnonymousType6<id,title,children>'
istnieje zarówno „MyWebCore.dll” i „” MvcExtensions.dll
Dziwne.
Oto kod używam:
protected dynamic FlattenTopics()
{
Func<List<Topic>, object> _Flatten = null; // satisfy recursion re-use
_Flatten = (topList) =>
{
if (topList == null) return null;
var projection = from tops in topList
select new
{
id = tops.Id,
title = tops.Name,
children = _Flatten(childs.Children.ToList<Topic>())
};
dynamic transformed = projection;
return transformed;
};
var topics = from tops in Repository.Query<Topic>().ToList()
select new
{
id = tops.Id,
title = tops.Name,
children = _Flatten(tops.Children.ToList<Topic>())
};
return topics;
}
Wszystko co robię jest spłaszczenie listę własny zawierający obiektów - w zasadzie jest to lista Poços że będą nadziewane w widoku drzewa (jstree) .
Klasa Temat jest zdefiniowany jako:
public class Topic
{
public Guid Id {get;set;}
public string Name {get;set;}
public List<Topic> Children {get;set;}
}
I tu jest przykładem tego, co jest pierwszym członkiem zwróconego obiektu dynamicznego wygląda następująco:
[0] = {
id = {566697be-b336-42bc-9549-9feb0022f348},
title = "AUTO",
children = {System.Linq.Enumerable.SelectManyIterator
<MyWeb.Models.Topic,
MyWeb.Models.Topic,
<>f__AnonymousType6<System.Guid,string,object>
>}
}
dzwonisz FlattenTopics od innego zespołu? Typy anonimowe nie mogą być używane w złożeniach: http://stackoverflow.com/questions/2993200/return-consume-dynamic-anonymous-type-ross- assembly-boundaries –
Wyniki LINQ nie działają dobrze poza zakresem, ze względu na typy anonimowe: http://msdn.microsoft.com/en-us/magazine/ee336312.aspx –
@Igor - nie - z metody akcji w moim kontrolerze MVC ... – bbqchickenrobot