我試圖通過linq投影將List<Topic>
轉換爲匿名或動態類型...我正在使用下面的代碼,但它似乎並沒有正常工作。它返回的動態類型沒有錯誤,但是,如果我嘗試枚舉兒童場(list<object/topic>
),那麼它說列表<T> LINQ投影到匿名或動態類型
結果查看=類型
'<>f__AnonymousType6<id,title,children>'
兩個「MyWebCore.dll」和「MvcExtensions.dll」存在
奇怪。
這裏是我使用的代碼:
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;
}
我做的是扁平化自包含對象的列表 - 本質上這是一個將被裝進一個樹型視圖(jstree)波蘇斯名單。
的主題類定義爲:
public class Topic
{
public Guid Id {get;set;}
public string Name {get;set;}
public List<Topic> Children {get;set;}
}
這裏是什麼樣的返回動態對象的第一個成員看起來像一個例子:
[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 – 2012-02-14 21:37:21
LINQ結果不適用範圍,由於匿名類型:http://msdn.microsoft.com/en-us/magazine/ee336312.aspx – 2012-02-14 21:44:51
@Igor - 否 - 從我的MVC控制器中的Action方法... – bbqchickenrobot 2012-02-14 22:09:19