【发布时间】:2010-10-09 02:09:35
【问题描述】:
我有一个包含父子记录的数据库表,非常类似于类别表。该表的 ParentID 字段保存了该记录的父记录的 ID...
我的表格列是:SectionID、Title、Number、ParentID、Active
我只打算让我的父母与孩子的关系深入两个层次。所以我有一个部分和一个子部分和它。
我需要以这样的大纲方式将此数据输出到我的 MVC 视图页面中......
- 第 1 节
- 1 的第 1 小节
- 1 的第 2 小节
- 1 的第 3 小节
- 第 2 节
- 第 1 小节,共 2 节
- 第 2 小节,共 2 节
- 第 3 小节,共 2 节
- 第 3 节
我正在使用 Entity Framework 4.0 和 MVC 2.0 并且从未尝试过使用 LINQ 进行类似的操作。我在节表上设置了一个 FK,将 ParentID 映射回 SectionID,希望 EF 会创建一个复杂的“节”类型,其中子节作为节类型列表的属性,但也许我没有正确设置。
所以我猜我仍然可以使用 LINQ 查询获得最终结果。有人可以指出一些可以提供解决方案或可能提供正确方向提示的示例代码吗?
更新:
我能够整理我的 EDMX,以便我可以将每个部分的子部分作为类型列表的属性,但现在我意识到我需要对相关实体进行排序。
var sections = from section in dataContext.Sections
where section.Active == true && section.ParentID == 0
orderby section.Number
select new Section
{
SectionID = section.SectionID,
Title = section.Title,
Number = section.Number,
ParentID = section.ParentID,
Timestamp = section.Timestamp,
Active = section.Active,
Children = section.Children.OrderBy(c => c.Number)
};
产生以下错误。 无法将类型“System.Linq.IOrderedEnumerable”隐式转换为“System.Data.Objects.DataClasses.EntityCollection”
【问题讨论】:
-
花一些时间清理您的问题的格式。读起来很痛苦。可以粘贴 EDMX 设计器的屏幕截图,这样我们就可以将关系可视化。
-
抱歉,我修好了,我把列表卡在一个代码块中,以为编辑器会保留返回和空格。
-
我想我将不得不切换到 WebForms、ADO.Net 和类型化数据集。对于转向 .net 的开发人员来说,LINQ 是一个巨大的障碍。很遗憾,除了简单的选择表达式之外的任何东西都不是很直观且难以掌握。我在其他 3 个网站上发布了同样的问题,但没有一个网站有任何 cmets。我猜大多数 .net 开发人员不知道如何使用 linq 对数据输出进行分组。除了一堆示例代码之外,我还没有找到一个解释 linq 分组实际机制的教程。
-
I have a FK set up on the section table mapping the ParentID back to the SectionID hoping EF would create a complex "Section" type with the Sub-Sections as a property of type list of Sections but maybe I did not set things up correctly.你的假设是正确的。如果你有一个 FK,你的实体应该有一个Section类型的Parent属性和一个“小节”的集合。如果不是这样,您能否扩展您的答案并发布生成的类型(可能是 EDMX 屏幕截图)?
标签: linq