【发布时间】:2017-01-17 16:12:25
【问题描述】:
我需要在填充后按字母顺序对ObservableCollection 进行排序,假设里面有这个模型:
class Nation
{
public string Name { get; set; }
}
这是我的ObservableCollection:
ObservableCollection<Nation> ob = new ObservableCollection<Nation>();
假设里面有三件按这个顺序排列的物品:
- 英格兰
- 阿富汗
- 意大利
我需要按字母顺序排序,所以我尝试:
ob.OrderBy(c => c.Name);
但我没有效果,什么时候应该是:
- 阿富汗
- 英格兰
- 意大利
我做错了什么?
【问题讨论】:
-
您必须将结果分配给某些东西,它会返回一个排序的集合。
var sortedOb = ob.OrderBy(c => c.Name); -
@Igor 所以应该是:
ob = ob.OrderBy(c => c.Name);? -
您必须将其转换回
ObservableCollection<T>,因为OrderBy返回IEnumerable<T>。 -
@AgainMe 每个 LINQ 方法都会生成一个新的枚举,而不是修改原来的枚举
-
@AgainMe 否 - 它返回一个 iterator 包装原始集合,当您循环遍历它时以指定的顺序返回它们的元素。