将IOrderedEnumerable转换为ICollection

3
我希望能在将一些随机整数插入数据库之前对它们的顺序进行排序。
if (integerList.Direction.Equals("ascending")) {
    integerList.Integers = integerList.Integers.OrderBy(i => i.IntegerValue);
} else {
    integerList.Integers = integerList.Integers.OrderByDescending(i => i.IntegerValue);
}

orderby和orderbydescending似乎将我类中的整数从ICollection转换为IOrderedEnumerable。有人能提供如何将排序后的整数进行强制转换的建议吗?


1
通常情况下,数据库比代码更擅长对数据进行排序,因此在许多情况下,您最好将数据按照任何顺序转储到数据库中,然后在选择查询上放置排序语句。 - MikeT
2个回答

7
ToList()

如果我没记错的话,将会为您创建一个从 Collection 继承的列表。

或者使用 ToArray()。哪种更好取决于您将如何使用集合。 - Richard
另外,如果你喜欢的话,也可以使用 ToDictionary() - ywm
ToList 会创建另一个副本,那么在不创建额外副本的情况下,最好的方法是什么? - Pravin Chandankhede

0
根据你的问题,我假设`Integers`属性是类型为`ICollection `的。添加`ToList()`或`ToArray()`将结果转换为`List `或`int []`(两者都实现了`ICollection`)。
由于无法确定数据库是否按照添加顺序存储值,因此在添加到数据库之前对其进行排序没有意义。相反,您应该为相应字段添加索引,并使用该字段上的ORDER BY获取有序值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接