如何将IEnumerable <t>的子集合转换为EntityCollection <t>?</t> </t>

时间:2012-06-08 01:03:28

标签: c# linq entity-framework

我正在使用EF,因此我的Child集合的类型为EntityCollection&lt; T>。如果属性“Children”是EntityCollection&lt; T>如何转换查询结果IEnumerable&lt; T>到EntityCollection&lt; T&gt;?

由于

 var list = element.Elements(ns + "Parent")
        .Select(parsedXml => 
                        Children = parsedXml.Elements(ns + "Child")
                        .Select(child => new Child { 
                                                        Id = Convert.ToInt32(child.Attribute("id").Value)
                                                   })
                        });

2 个答案:

答案 0 :(得分:2)

由于您已经在使用LINQ,因此可以通过创建扩展方法来使用相同的模型执行此操作:

public static EntityCollection<T> ToEntityCollection<T>(this IEnumerable<T> source) 
{
    var col = new EntityCollection<T>();
    foreach (var item in source)
    {
        col.Add(item);
    }
    return col;
}

然后在原始LINQ语句中使用此方法,将.ToEntityCollection()添加到结尾。

答案 1 :(得分:0)

没有直接施法。您需要遍历集合并添加到新的实体集合。

var eCollection = new EntityCollection<T>();    
foreach (var child in list)
{
    eCollection.Add(child );
}