0

我正在使用 EF,所以我的子集合的类型是 EntityCollection < T >。如果属性“Children”为EntityCollection<T>,如何将查询结果IEnumerable<T>转换为EntityCollection<T>?

谢谢

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

2 回答 2

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()到末尾来使用它。

于 2012-06-08T01:38:35.343 回答
0

没有可用的直接铸造。您将需要遍历集合并添加到新的实体集合中。

var eCollection = new EntityCollection<T>();    
foreach (var child in list)
{
    eCollection.Add(child );
}
于 2012-06-08T01:20:40.017 回答