【发布时间】:2015-07-09 13:32:11
【问题描述】:
我已经为一个简单的类实现了 GetEnumerator 方法,但我很惊讶我无法使用 linq 对枚举器进行排序(对 this.OrderBy(x => x) 的调用无效)。有人可以解释一下这里发生了什么吗?我做错了什么还是枚举数只是为了迭代?
class Test
{
private Dictionary<int, string> dict
= new Dictionary<int, string>();
public IEnumerator<int> GetEnumerator()
{
return dict.Keys.GetEnumerator();
}
public Test()
{
dict[1] = "test";
dict[2] = "nothing";
}
public IEnumerable<int> SortedKeys
{
get { return this.OrderBy(x => x); } // illegal!
}
public void Print()
{
foreach(var key in this)
Console.WriteLine(dict[key]);
}
}
【问题讨论】:
-
你需要实现
IEnumerable<T>
标签: c# linq enumerator