Lambda表达式基于C#中的值查找上/下键
本文关键字:查找 下键 表达式 Lambda | 更新日期: 2023-09-27 18:09:13
。NET框架4.6。
给定此排序字典:
var mydict = new SortedDictionary<int, int> {{1, 0}, {2, 0}, {4, 14}, {8, 33}, {16, 0}, {32, 0} , {64,0} };
我试图找到键"16",因为它是最后一个非零值键之后的第一个值为0的键。
给定此排序字典:
var mydict = new SortedDictionary<int, int> {{1, 0}, {2, 8}, {4, 0}, {8, 33}, {16, 11}, {32, 0} , {64,0} };
我想找到32的钥匙。
我知道如何通过枚举和临时变量来做到这一点,但我要求使用Lambda。
感谢所有的想法。
只需从Reverse
的末尾开始,然后在值为0(TakeWhile
(时继续,并获取最后一项(LastOrDefault
(的密钥(Select
(。
var key = mydict.Reverse()
.TakeWhile(kvp => kvp.Value == 0)
.Select(kvp => kvp.Key)
.LastOrDefault();
顺便说一下,这被称为Linq,而不是lambda,尽管lambda被用作Linq的一部分。
mydict
.SkipWhile(x => x.Key == 0)
.Where(x => x.Value == 0)
.Select(x => x.Key)
.FirstOrDefault();