gpt4 book ai didi

c# - 如何使用 Linq/C# 在字典中获取当前之前和之后的项目?

转载 作者:可可西里 更新时间:2023-11-01 03:12:08 37 4
gpt4 key购买 nike

我有一个项目字典,如果我选择一个项目,那么我会给出上一个和下一个选项。我添加了一个代码示例,但我希望有更好/更快的方法来执行此操作,例如500 个项目。

可能有 LINQ 选项之类的吗?

我检查了 Enumerator,但它只有一个 moveNext 方法,无法设置电流。

简单示例:

projects 是一个字典

project 是存在于 Dictionary 中的 KeyValuePair

var match = false;
var save = new KeyValuePair<ExtendedProjectLightPlan, Page>();
var before = new KeyValuePair<ExtendedProjectLightPlan, Page>();
var after = new KeyValuePair<ExtendedProjectLightPlan, Page>();
foreach (var p in projects)
{
before = save;
save = p;

if (match)
{
after = p;
break;
}

if (p.Key.Id == project.Key.Id)
{
match = true;
}
}

最佳答案

' current 之前的项目':

items.TakeWhile(x => x != current).LastOrDefault();

' current 之后的项目':

items.SkipWhile(x => x != current).Skip(1).FirstOrDefault();

适用于整数类型,但会返回 default(T)在序列的末端。将项目转换到 Nullable<T> 可能很有用这样在第一项之前和最后一项之后返回 null相反。

关于c# - 如何使用 Linq/C# 在字典中获取当前之前和之后的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4334375/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com