如何将linq entitySet和CHILDREN转换为列表?

时间:2010-04-08 15:09:37

标签: asp.net linq

尝试序列化linq entitySet时遇到错误。为了解决这个问题,我将entitySet转换为列表。我现在遇到的问题是它的子实体集没有转换为列表,当我尝试序列化父类时,它们现在抛出错误。有没有人知道将linq entitySet和它的子节点转换为列表的方法?

P.S。我是linq的新手,所以如果其中任何一个没有意义,请告诉我

2 个答案:

答案 0 :(得分:1)

我猜你正在尝试序列化为XML。

无论哪种方式,问题都源于LINQ实体对象中的循环引用。假设您有一个主表Customers,其中包含第二个表OrdersCustomers实体引用了此客户的所有Orders(通常为Customer.Orders)。 Orders实体具有对客户实体的引用(通常为Order.Customer)。当序列化程序尝试序列化此对象时,它会识别循环引用并引发错误。

为了做你想做的事,你必须编写自己的序列化程序或将对象转换为可以直接序列化的对象,比如自定义序列化对象,它们只包含你想要在序列化版本中显示的信息。 / p>

答案 1 :(得分:1)

只需投射到新类型:

var q = from e in Entities
        select new 
        {
            Id = e.Id,
            Name = e.Name,
            Children = from c in e.Children
                       select new 
                       {
                           Id = c.Id,
                           Name = c.Name,
                           // etc.
                       },
             // etc.
         };
var s = serializer.Serialize(q);