Asp.net LINQ查询选择实体及其集合查询

Asp.net LINQ查询选择实体及其集合查询,asp.net,linq,c#-4.0,entity-framework-6.1,Asp.net,Linq,C# 4.0,Entity Framework 6.1,我有一个名为Parent的实体,其中包含子对象列表。 现在,我想按显示顺序选择父级及其所有子级 entities:- class parent{ Int id; List<Child> children; } class Child{

我有一个名为Parent的实体,其中包含子对象列表。 现在,我想按显示顺序选择父级及其所有子级

    entities:- class parent{
                          Int id;
                          List<Child> children;
                           }

                class Child{ 
                            String name;
                            DateTime DOB;
                            Int DisplayOrder;
                           }
                context.Parents.Find(id);
这一切都很好。但是现在我的要求已经改变了,现在我需要按显示顺序选择它的子项顺序。我该怎么做呢。感谢您的帮助

                context.Parents.Find(id);
更新父类:-

                context.Parents.Find(id);
              class parent{
                        public  Int id;
                        public virtual List<Child> children;
                           }
类父类{
公共Int id;
公共虚拟名单儿童;
}

您在列表中有“按命令排序”命令,您可以将“列”发送给控制器,并根据您提供的信息按此列排序。我猜您在某处使用了您的
子项来显示它们,这样您就可以只使用
parent.children.OrderBy(x=>x.DisplayOrder).ToList()
而不是简单的
父母。孩子
,我想你以前有过

                context.Parents.Find(id);
更新1。

                context.Parents.Find(id);
而且,据我记忆所及,我发现不包括你的孩子。因此值得尝试以下方法:

                context.Parents.Find(id);
var parent = context.Parents.Include(x => x.children).FirstOrDefault(x => x.id = id);
parent.children = parent.children.OrderBy(x => x.DisplayOrder).ToList();

在这种情况下,您可以确定只有一个父项具有给定的ID

                context.Parents.Find(id);
var parent = context.Parents.Find(id);
parent.children = parent.children.OrderBy(cl => cl.DisplayOrder).ToList();

我没有明白你的意思。我需要根据传递的id获取父项,并且它的所有子项也按显示顺序进行排序,但您可以使用context.Parents.Find(id).OrderBy(order=>order.DisplayOrder);它将不起作用,因为在Find()之后不能使用orderby扩展名。而且,display order属性用于子对象,而不是parentno。我访问了.cshtml文件中的model.children,在那里我使用for循环而不是foreach。我无法改变这一点,这就是为什么我问我是否可以从db中按顺序获得带孩子的家长itself@iGod我很确定你能改变这一点,只是告诉你用法?您将能够创建另一个局部变量,在其中存储重新排序的子变量,并且您将能够针对该变量进行循环。您好,Vlad,针对您更新的注释(很抱歉,我使用了该注释)。find还包括子项,刚才我提出了这个解决方案“parent.children=parent.children.OrderBy(x=>x.DisplayOrder.ToList()”。但这还好吗?@iGod这取决于您的应用程序设计和子记录的平均数量,但无法选择具有有序子记录的父项。你唯一能做的就是在SQL server端执行排序:从context.Parents.Find(id)中的p选择新的{id=p.id,children=p.children.OrderBy(c=>c.DisplayOrder)}我也想到了同样的方法。但我怀疑这是否正确approach@iGod当然,它在工作。但也许这不是最好的解决办法。但是,排序parent.children本身将不起作用。