C# c重新订购i收集

C# c重新订购i收集,c#,entity-framework-6,C#,Entity Framework 6,因为它是objectEF实体中的只读属性,所以我不能用新的Icollection实例替换它 我能够清除集合并添加所有重新排序的项,但我希望有更好的方法来完成此操作 ps:我正在尝试在加载实体对象后重新排序属性的子级 更新: 最后,我决定为json响应创建一个新对象 //var result= an EF object return Ok(new { ID = result.ID,

因为它是objectEF实体中的只读属性,所以我不能用新的Icollection实例替换它

我能够清除集合并添加所有重新排序的项,但我希望有更好的方法来完成此操作

ps:我正在尝试在加载实体对象后重新排序属性的子级

更新: 最后,我决定为json响应创建一个新对象

//var result= an EF object
return Ok(new
                    {
                        ID = result.ID, 
                        childs =result.childs.OrderByDescending(q => q.ID)
                    });
您可以将ICollection传递到列表的构造函数中,然后对其进行排序:

var list = new List</* your object type here */>(collection);
list.Sort((a, b) => /* your ordering logic here */);

为什么ICollection应该有一个顺序?不要尝试对它进行排序,只要创建一个新的列表并在需要的地方使用它。集合可以是从哈希集到LinkedList的任何内容,并且并非所有集合都有意义进行排序。如果没有更多的细节,这是一个很难回答的问题。实际上,我正在尝试在加载实体对象后重新排序属性的子级。因为我从.selects=>new{c=s.children.orderBy…}中得到了错误的值,ICollection是一个对象中的属性,我不能用另一个变量替换它。@CharlesChou所以您需要在另一个对象中对集合进行排序,而不将其与所述对象分离?这是一种你应该在你的问题帖子中包含的细节。我们还应该知道其他这样的细节吗?它是实体对象,我需要对它的子对象重新排序。似乎不建议修改子对象,因此我创建了一个新对象来存储重新排序的子对象。@CharlesChou您是对的。如果子项存储在ICollection中,那么对它们进行排序就没有意义了,因为该接口下面的特定集合类型可能不适用于排序,例如字典或哈希集。为了对它进行排序,您需要将集合的条目存储到一个您可以排序的条目中,这就是我在回答中所做的。