【发布时间】:2014-06-12 14:42:12
【问题描述】:
我有一个包含 A 类实例的列表。
class A
{
public int Id;
public float Value;
}
List<A> Collection = new List<A>( ... );
我想使用
对列表进行排序Collection.OrderBy(item => item.Value);
这应该可以工作,但是对于浮点数,它会打乱顺序。它会产生
1.0, 1.5, 1.6, 10.5, 11.54, 3.4, 4, 6.6, 7
其中 10.5、11.54 应位于列表底部。 如果 Value 是 int,这种方法非常有效。有什么线索吗?
【问题讨论】:
-
Collection.OrderBy不会修改现有的列表,它会返回一个有序的IEnumerable<T>做var newList = Collection.OrderBy(item => item.Value).ToList()你会看到有序的列表 -
@Habib,这是正确和最完整的答案。我会支持您的评论,但您应该将其发布为答案。
-
@MarkO,我不确定 OP 的代码是 OP 复制了整行还是一部分。但如果 OP 的问题得到解决,我会很高兴 :)
-
愚蠢的错误,你是对的@Habib,我必须将排序列表分配回其原始列表
Collection = Collection.OrderBy(item => item.Value).ToList();感谢您清除它,您应该回答而不是评论。无论如何投票