.NET Framework 4.6。
鉴于此SortedDictionary:
var mydict = new SortedDictionary<int, int> {{1, 0}, {2, 0}, {4, 14}, {8, 33}, {16, 0}, {32, 0} , {64,0} };
我正在努力寻找关键&#34; 16&#34;因为它是第一个值为0的键,它位于最后一个非零值键之后。
鉴于此SortedDictionary:
var mydict = new SortedDictionary<int, int> {{1, 0}, {2, 8}, {4, 0}, {8, 33}, {16, 11}, {32, 0} , {64,0} };
我想找到32的关键。
我理解如何使用枚举和临时变量来执行此操作,但我要求使用Lambda进行一些润滑。
所有的想法都表示赞赏,谢谢。
答案 0 :(得分:3)
只需从Reverse
开始,然后转到值为0(TakeWhile
)并抓住最后一项(Select
)的键(LastOrDefault
)
var key = mydict.Reverse()
.TakeWhile(kvp => kvp.Value == 0)
.Select(kvp => kvp.Key)
.LastOrDefault();
顺便说一句,这被称为Linq,而不是lambda,尽管lambdas被用作Linq的一部分。
答案 1 :(得分:0)
mydict
.SkipWhile(x => x.Key == 0)
.Where(x => x.Value == 0)
.Select(x => x.Key)
.FirstOrDefault();