使用Linq在集合中的指定元素之后查找元素
我有一份有序的人员名单。 我有一个我认识的人存在于该系列中。 如何确定列表中的下一个人?
你可以这样做:
IEnumerable persons = .. var firstPersonAfterJack = persons.SkipWhile(p => p.Name != "Jack") .ElementAt(1); //Zero-indexed, means second
我们的想法是生成一个序列,导致跳过元素直到满足条件,然后获取该序列的第二个元素。
如果无法保证查询将返回结果(例如,从未找到匹配项,或者是序列的最后一个元素),则可以使用ElementAt
替换ElementAtOrDefault
,然后执行null
-test以检查是否成功。
我注意到你在问题中说你有一个有序的人员名单。 如果您能够更详细地解释这意味着什么,我们可能能够提供更好的答案(例如,我们可能不必对序列进行线性搜索)。
SkipWhile
是一种方法,它接受谓词并跳过所有内容,直到谓词为假。 它返回该元素和之后的所有内容。
var remainingPeople = collectionOfPeople.SkipWhile(p => !isThePerson(p)); if (remainingPeople.Count() == 1) { // the person was the last in the list. } var nextPerson = remainingPeople.Skip(1).First();
其中isThePerson
是一个接受一个人的方法,如果它是你感兴趣的人,则返回true。
上述就是C#学习教程:使用Linq在集合中的指定元素之后查找元素分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1039042.html