I have a dictionary of projects and if I select a project then I will give an option previous and next. I have added a code example but I hope there is a better / faster way to do this e.g. for 500 projects.
Is there maybe a LINQ option or something?
I have checked Enumerator but it only has a moveNext method and can’t set the current.
Quick example:
projects is a Dictionary.
project is a KeyValuePair that exists in the Dictionary.
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;
}
}
There’s nothing built into LINQ to do this, but you could write your own fairly easily… here’s an implementation which uses
Tuplefrom .NET 4. It will return n-2 items for a sequence which originally has n items – but you could adjust that if necessary.Note that as per LukeH’s answer, dictionaries are unordered… but hopefully the above will help you anyway.