Linq to sql 易读父-子

Linq to sql 易读父-子,linq-to-sql,Linq To Sql,我需要将:IQueryable转换为IQueryable 这不起作用,无法将EntitySet转换为IQueryable。谢谢使用: IQueryable<CHILD> result = query.SelectMany(t => t.Children); Distinct从查询中删除重复项 a本机上,您可以使用分组为子级创建分组: IEnumerable<CHILD> result = query.SelectMany(t => t.Children)

我需要将:IQueryable转换为IQueryable

这不起作用,无法将EntitySet转换为IQueryable。谢谢

使用:

IQueryable<CHILD> result = query.SelectMany(t => t.Children);
Distinct从查询中删除重复项

a本机上,您可以使用分组为子级创建分组:

IEnumerable<CHILD> result = query.SelectMany(t => t.Children)
                                 .GroupBy(x => new CHILD { 
                                      id = x.id 
                                      // add other properties here
                                 })
                                 .Select(g => g.Key);
OfType筛选项目,以便Cast可以执行类型转换。

使用:

IQueryable<CHILD> result = query.SelectMany(t => t.Children);
Distinct从查询中删除重复项

a本机上,您可以使用分组为子级创建分组:

IEnumerable<CHILD> result = query.SelectMany(t => t.Children)
                                 .GroupBy(x => new CHILD { 
                                      id = x.id 
                                      // add other properties here
                                 })
                                 .Select(g => g.Key);

OfType过滤项,以便Cast可以执行类型转换。

当您表示Cast时,这意味着您可以将父级转换为子级,即父级继承自子级,或者两者实现相同的接口,尽管这与IQueryable相矛盾。是的,它们在数据库中具有entityset关联,因此子级继承自父级。你的方法有效,但由于某种原因创建了一些重复项。修改了我的答案。然而,您描述的关系是1:n关系。即父母有多个子女,每个子女有一个父母。继承是不同的!它描述了一种类型关系,例如黄瓜属于蔬菜类型。当您获得重复项时,这意味着在1:n关系的情况下,您的子表中有多个具有相同值的项。当您表示强制转换时,这意味着您可以将父项强制转换为子项,即父项继承自子项,或者两者实现相同的接口,尽管这与IQueryable相矛盾。是,它们在数据库中具有entityset关联,因此子项继承自父项。你的方法有效,但由于某种原因创建了一些重复项。修改了我的答案。然而,您描述的关系是1:n关系。即父母有多个子女,每个子女有一个父母。继承是不同的!它描述了一种类型关系,例如黄瓜属于蔬菜类型。当您获得重复项时,这意味着在1:n关系的情况下,您的子表中有多个具有相同值的条目。
someQuery.OfType<TypeToCastTo>().Cast<TypeToCastTo>();