我试图弄清楚如何在下面的代码段中使用 lambda 编写正确的 TakeWhile 语法,这样我就可以让这个过滤工作并返回过滤后的字典。这里有人可以帮忙吗?提前致谢..
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 是一个字典 (int,int),具有 n 个整数值和整数键。好的,这里我使用的 lambda myList.TakeWhile(x => x.Value >= KeyToFind) 只执行一次。也就是说,x 在运行时只保存第一条记录,比较只进行一次,temp 有 0 条记录,尽管在第 2 行之后,myList 有 n 条记录。但是在运行时,当 lambda 比较完成时,myList 不在上下文中。但是同样,当执行返回到第 4 行时,myList 又回到了上下文中,但 temp 始终有 0 条记录。TakeWhile 不工作。我需要更正 lambda 吗?