linq投影を使用してList<Topic>
を匿名または動的型に変換しようとしています...次のコードを使用していますが、正しく動作していないようです。私は子供フィールド(list<object/topic>
)を列挙しようとした場合、それは、しかし、エラーなしで動的な型を返し、それはリスト<T> LINQ匿名または動的型への投影
結果ビュー=タイプ
'<>f__AnonymousType6<id,title,children>'
は「MyWebCore.dll」と「MvcExtensions.dll」の両方に存在すると言います
Strange。 - 基本的には、ツリービュー(jstree)に詰め込まれるPOCOSのリストです
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;
}
を私がやっているすべては自己含むオブジェクトのリストを平坦化されています。ここでは
は、私が使用していたコードです。
トピッククラスは次のように定義されます
public class Topic
{
public Guid Id {get;set;}
public string Name {get;set;}
public List<Topic> Children {get;set;}
}
そして、ここで返された動的オブジェクトの最初のメンバーがどのように見えるかの例です:あなたは同じLINQを持っていないのはなぜ
[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>
>}
}
あなたが別のアセンブリからFlattenTopicsを呼び出していますか?匿名型はアセンブリ全体で使用できません:http://stackoverflow.com/questions/2993200/return-consume-dynamic-anonymous-type-across-assembly-boundaries –
LINQの結果は、匿名のタイプ:http://msdn.microsoft.com/en-us/magazine/ee336312.aspx –
@Igor - no - MVCコントローラ内のアクションメソッドから... – bbqchickenrobot