Tôi đang cố chuyển đổi List<Topic>
thành loại ẩn danh hoặc động thông qua phép chiếu LINQ ... Tôi đang sử dụng mã sau, nhưng dường như không hoạt động đúng cách . Nó trả về kiểu động mà không có lỗi, tuy nhiên, nếu tôi cố gắng liệt kê các lĩnh vực trẻ em (list<object/topic>
) sau đó nó nóiDanh sách <T> LINQ Chiếu thành Ẩn danh hoặc Kiểu động
Xem Kết Quả = Loại
'<>f__AnonymousType6<id,title,children>'
tồn tại trong cả hai 'MyWebCore.dll' và 'MvcExtensions.dll'
Lạ.
Đây là mã tôi đang sử dụng:
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;
}
Tất cả tôi đang làm là làm phẳng một danh sách các đối tượng tự chứa - về cơ bản đó là một danh sách các POCOs sẽ được nhồi vào một cái nhìn cây (jstree) .
Lớp Topic được định nghĩa là:
public class Topic
{
public Guid Id {get;set;}
public string Name {get;set;}
public List<Topic> Children {get;set;}
}
Và đây là một ví dụ về những gì thành viên đầu tiên của đối tượng năng động trở lại trông giống như:
[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>
>}
}
Bạn đang gọi từ lắp ráp khác? Không thể sử dụng các loại ẩn danh trên các cụm: http://stackoverflow.com/questions/2993200/return-consume-dynamic-anonymous-type-across-assembly-boundaries –
Kết quả LINQ không hoạt động tốt ngoài phạm vi, do các loại ẩn danh: http://msdn.microsoft.com/en-us/magazine/ee336312.aspx –
@Igor - no - từ một phương thức Hành động trong bộ điều khiển MVC của tôi ... – bbqchickenrobot