LINQ to SQL 和嵌套的 EntitySet 类型

LINQ to SQL and nested EntitySet type

我有一个带有 EntitySet 的模型。我正在尝试构建 LINQ 语句,但我不确定如何形成代码。我收到转换错误,因为它无法将泛型列表转换为 EntitySet 类型。

select new ParentRecord {
ParentID = item.ParentID,
Name = item.Name,
Age = item.Age,
MyNestedChildRecords = (from ns in item.MyNestChildRecords
                       select ns).ToList();
}.ToList();

无法将源类型 "List" 转换为目标类型 "EntitySet"

试试这个:

var test = (from ns in item.MyNestedChildRecords
            select new ParentRecord
            {
                ParentID = item.ParentID,
                Name = item.Name,
                Age = item.Age,
                MyNestedChildRecords = new EntitySet<MyNestedChildRecords>() { ns }
            }).ToList();

显然,你有类似的东西

from item in myItems
select new ParentRecord {
....

问题是您不能简单地将 List<T> 转换为 EntitySet<T>,因为 EntitySet<T> 没有合适的构造函数。

最简单的方法是在 Select:

中使用 LINQ 流畅语法和匿名方法
var result = myItems.Select(item => 
                {
                    var record = new ParentRecord
                    {
                        ParentID = item.ParentID,
                        Name = item.Name,
                        Age = item.Age
                    };
                    record.MyNestedChildRecords.AddRange(item.MyNestChildRecords);
                    return record;
                }).ToList()

我假设 ParentRecord 是一个 LINQ-to-Sql 实体 class,因此它的 MyNestedChildRecords 将被初始化。