通用列表上的TakeWhile扩展方法

时间:2013-01-30 11:33:22

标签: extension-methods generic-list

我试图弄清楚如何在下面的代码段中使用lambda编写正确的TakeWhile语法,因此我可以使用此过滤工作并返回已过滤的Dictionary。这里有人可以帮忙吗?提前谢谢..

List<KeyValuePair<int, int>> myList = myHashList.ToList();
myList.Sort( (x,y) => x.Value.CompareTo(y.Value) );
var temp = myList.TakeWhile(x => x.Value >= keyToFind);
Dictionary<int, int> outDict = temp.ToDictionary(y => y.Key, y => y.Value);

我还要提一下,myHashList是一个包含n个整数值和整数键的Dictionary(int,int)。好的,这里我正在使用myList.TakeWhile(x =&gt; x.Value&gt; = KeyToFind)的lambda只执行一次。也就是说,运行期间的x只保存第一条记录,比较只进行一次,temp有0条记录,尽管在第二行之后,myList有n条记录。但是在运行时,当lambda比较完成时,myList不在上下文中。但同样,当执行返回第4行时,myList返回上下文,但temp始终为0记录。 TakeWhile没有工作。我需要纠正lambda吗?

1 个答案:

答案 0 :(得分:0)

好的,我自己在这里添加答案。事实上,这是一件愚蠢的事情。 lambda应该是(x =&gt; keyToFind&gt; = x.Value)而不是反过来因为总是我的列表从值0开始按升序排序,因此永远不会是&gt; = keyToFind(它应该再次具有是ValueToFind而不是keyToFind,因为我打算找到Value而不是Key),所以再次感谢!

相关问题