используя упорядоченный список <Article>, я хочу получить следующий / предыдущий URL - PullRequest
2 голосов
/ 28 мая 2010

Итак, у меня есть коллекция List, которую я получаю с помощью вызова API (который я не могу контролировать).

Список упорядочен.

public class Article 
{
     int articleID;
     string Url
}

Итак, у меня есть значение Url, с помощью которого я хочу выяснить следующий и предыдущий URL, если таковые имеются.

Какой самый элегантный способ сделать это?

Ответы [ 2 ]

6 голосов
/ 28 мая 2010

Так как ваш список имеет тип Article ...

var foundIndex = articles.FindIndex(a => a.Url == "myUrl");
var previousUrl = (foundIndex > 0 ? articles[foundIndex - 1].Url : null);
var  nextUrl = (foundIndex < articles.Count-1 ? articles[foundIndex + 1].Url : null);
0 голосов
/ 29 мая 2010

Вы можете сделать это также с LINQ, с некоторыми безобразными пропусками и дублями:)

class Program
{
    static void Main(string[] args)
    {
        List<Article> list = new List<Article>() { 
            new Article() { articleID = 1, Url = "http://localhost/1" }, 
            new Article() { articleID = 2, Url = "http://127.0.0.1/2" },
            new Article() { articleID = 3, Url = "http://localhost/3" }, 
            new Article() { articleID = 4, Url = "http://127.0.0.1/4" }
        };

        var coll = (from e in list select e).Skip((from e in list where e.Url.Equals("http://localhost/3") select list.IndexOf(e)).First() - 1).Take(3);

        Console.WriteLine(coll.First().Url);
        Console.WriteLine(coll.Last().Url);

        Console.ReadKey();
    }
}

public class Article  
{ 
    public int articleID;
    public string Url;
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...